Computing desk | ||
---|---|---|
< May 3 | << Apr | May | Jun >> | May 5 > |
Welcome to the Wikipedia Computing Reference Desk Archives |
---|
The page you are currently viewing is an archive page. While you can leave answers for any questions shown below, please ask new questions on one of the current reference desk pages. |
hey I am a newbie at opengl programming in fact just started.. I got this program to compile under VS2008 but it crashes at glClear():-
i have included gl.h, glut.h and defined GLUT_DISABLE_ATEXIT_HACK
void display(void)
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
glBegin(GL_POLYGON);
glVertex3f (0.25, 0.25, 0.0);
glVertex3f (0.75, 0.25, 0.0);
glVertex3f (0.75, 0.75, 0.0);
glVertex3f (0.25, 0.75, 0.0);
glEnd();
glFlush ();
}
void init (void)
{
glClearColor (0.5, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize (250, 250);
glutInitWindowPosition (100, 100);
glutCreateWindow ("hello");
init ();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
it crashes at glutMainLoop() while doing a callback to display(). Commenting that line produces a crash at glFlush(). I am using windows vista with ATI drivers. Bobatnet (talk) 12:12, 4 May 2008 (UTC)
void display(void)
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
glBegin(GL_POLYGON);
glVertex3f (0.25, 0.25, 0.0);
glVertex3f (0.75, 0.25, 0.0);
glVertex3f (0.75, 0.75, 0.0);
glVertex3f (0.25, 0.75, 0.0);
glEnd();
glFlush ();
glutSwapBuffers ( );
}
If you forget to do this, your window won't display what you want, and it will look like it crashed. Leeboyge (talk) 23:54, 4 May 2008 (UTC)
Tried that but it still crashes. Actually, it stays on screen for some seconds and then it crashes. Also, the code is copied from the red book as I am just learning opengl. So, may be the code is right ?!! Bobatnet (talk) 04:47, 5 May 2008 (UTC)
#include <windows.h>
#include <stdlib.h>
#include <unistd.h>
#include <GL/glut.h>
#include <iostream>
using namespace std;
void display(void)
{
glClear (GL_COLOR_BUFFER_BIT);
glColor3f (1.0, 1.0, 1.0);
glBegin(GL_POLYGON);
glVertex3f (0.25, 0.25, 0.0);
glVertex3f (0.75, 0.25, 0.0);
glVertex3f (0.75, 0.75, 0.0);
glVertex3f (0.25, 0.75, 0.0);
glEnd();
glFlush ();
glutSwapBuffers ( );
}
void init (void)
{
glClearColor (0.5, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize (250, 250);
glutInitWindowPosition (100, 100);
glutCreateWindow ("hello");
init ();
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
I compiled with this:
g++ -g -Wall test.cpp -l glut32 -l glu32 -l opengl32 -o test
This gives me a white square centered on a dark red background. If yours is crashing, I can only guess that it may be something to do with linking the libraries or with Visual Studio. You should have no problem running on XP or Vista. I am running on Vista right now, and it works just fine. Leeboyge (talk) 06:32, 5 May 2008 (UTC)