PDA

View Full Version : opengl/glut code sample + errors...need some help



zzapatista
02-15-2001, 04:08 PM
this is a pretty long code example but i just wanted to know if i'm doing something stupid/wrong. I just attempted to modify an example given from a book to include some other things. I get 3 errors:

C:\My Documents\glstuff\temp2\try.cpp(32) : error C2601: 'mouse' : local function definitions are illegal
C:\My Documents\glstuff\temp2\try.cpp(47) : error C2601: 'main' : local function definitions are illegal
C:\My Documents\glstuff\temp2\try.cpp(60) : fatal error C1004: unexpected end of file found
Error executing cl.exe.

try.exe - 3 error(s), 0 warning(s)

if anyone sees something that really stands out wrong please point it out cuz i'm a real beginner trying to get a feel for this 2d stuff

#include <iostream.h>
#include <gl/glut.h>

static GLint vertices[] = {25, 25, 100, 325, 175, 25, 175, 325, 250, 25, 325, 325, };
static GLfloat colors[] = {1.0, 0.2, 0.2, 0.2, 0.2, 1.0, 0.8, 1.0, 0.2, 0.75, 0.75,
0.75, 0.35, 0.35 ,0.35 ,0.5, 0.5, 0.5,};


void init(void)
{

glClearColor(1.0, 1.0, 1.0, 1.0);

glShadeModel(GL_FLAT);

}

void display (void){

glEnableClientState(GL_COLOR_ARRAY);

glEnableClientState(GL_VERTEX_ARRAY);


glColorPointer(3, GL_FLOAT, 0, colors);

glVertexPointer(2, GL_INT, 0, vertices);


glClear(GL_COLOR_BUFFER_BIT);

glColor3f(1.0, 1.0, 1.0);

glBegin(GL_TRIANGLES);

glArrayElement(2);

glArrayElement(3);

glArrayElement(5);

glEnd();


void mouse(int button, int state, int x, int y){
switch (button) {

case GLUT_LEFT_BUTTON:


if (state == GLUT_DOWN)

glColor3f(0.5, 0.5, 0.5);

break;

default:

break;

}

}


int main (int argc, char** argv)

{

glutInit(&argc, argv);

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);

glutInitWindowSize(250, 250);

glutInitWindowPosition(100, 100);

glutCreateWindow("Test");

init();

glutDisplayFunc(display);

glutMouseFunc(mouse);

glutMainLoop();

return 0;

}

thanx for any help

mango
02-15-2001, 05:07 PM
I copied and had to add a } before the line "void mouse(int button, int state, int x, int y){" to compile it. That gives me just a blank window so the program is not finished yet.

Deiussum
02-16-2001, 05:24 AM
It usually helps to close out the current function before trying to start a new function. http://www.opengl.org/discussion_boards/ubb/smile.gif

zzapatista
02-16-2001, 09:40 AM
yeah yeah...keep ur sarcasm to urself :P

Rizo
02-16-2001, 11:19 AM
There is a remedy,

Emacs, by far the most powerful editor, does have paranthesis and bracked matching. So when I get stuck with weird code errors that should work (and the compiler spits out just junk messages) I copy/pase my code in emacs and start checking brackeds...emacs also indents your code automatically when u press tab. It also does a lot of syntax checking. For example if you have a few nested if...elses then you might get confused which else belonged to which if, Emacs automatically will tell you which elses match which ifs. Add a powerful built in ftp and shell and there is no match for emacs. You can create your project in VC++/other compiler and then edit your files using Emacs...I believe you can also make VC++ to use emacs as its default editor...

here is the link http://www.gnu.org/software/emacs/emacs.html

Rizo

Deiussum
02-16-2001, 01:34 PM
Sorry for the sarcasm, but if you're working with OpenGL, you should have a pretty good grasp of basic C/C++. This was a pretty basic C/C++ problem. The term "local function definition" should have clued you in that a function was being declared inside another function. (Local meaning inside a function.)

Next thing you know, you'll start posting errors about undeclared variables. http://www.opengl.org/discussion_boards/ubb/smile.gif

zzapatista
02-16-2001, 01:44 PM
Nah i have a basic grasp of C++. Just didn't see that bracket missing...i've been getting so many GL errors that i've started just asking people before i remember that i can mess up the c++ part 2 http://www.opengl.org/discussion_boards/ubb/wink.gif

mango
02-16-2001, 03:57 PM
It is always easy finding errors in other programmers code. http://www.opengl.org/discussion_boards/ubb/smile.gif

I beilived that everybody had switching Ctrl+J and Return in emacs so that the line get indented and checked when you press return.