Note that there are some explanatory texts on larger screens.

plurals
  1. POOpenGL on Fedora 15
    primarykey
    data
    text
    <p>I am trying to program in OpenGL.</p> <p>so wrote a test program call t_gl1.cpp</p> <p>I built it successfully with</p> <p>$ g++ t_gl1.cpp -lglut -lGL -lGLU -o t_gl1</p> <p>No any error.</p> <p>However, if I try to run it, I got </p> <p>freeglut (./t_gl1): ERROR: Internal error in function fgOpenWindow X Error of failed request: BadWindow (invalid Window parameter) Major opcode of failed request: 4 (X_DestroyWindow) Resource id in failed request: 0x0 Serial number of failed request: 26 Current serial number in output stream: 29</p> <p>Does any one know what is going on?</p> <p>Here is the code, tested on Windows and Mac, no problem. But can't get it run on Fedora nor Ubuntu</p> <pre><code>#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #ifdef __APPLE__ #include &lt;OpenGL/OpenGL.h&gt; #include &lt;GLUT/glut.h&gt; #else #include &lt;GL/glut.h&gt; #endif using namespace std; //Called when a key is pressed void handleKeypress(unsigned char key, //The key that was pressed int x, int y) { //The current mouse coordinates switch (key) { case 27: //Escape key exit(0); //Exit the program } } //Initializes 3D rendering void initRendering() { //Makes 3D drawing work when something is in front of something else glEnable(GL_DEPTH_TEST); glEnable(GL_COLOR_MATERIAL); //NEW OF THIS glClearColor(0.7f,0.9f,1.0f,1.0f); //background, last number to be 1.0f } //Called when the window is resized void handleResize(int w, int h) { //Tell OpenGL how to convert from coordinates to pixel values glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); //Switch to setting the camera perspective //Set the camera perspective glLoadIdentity(); //Reset the camera gluPerspective(45.0, //The camera angle (double)w / (double)h, //The width-to-height ratio 1.0, //The near z clipping coordinate 200.0); //The far z clipping coordinate } float _angle=30.0f; //kinda global variable //Draws the 3D scene void drawScene() { //Clear information from last draw glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); //Switch to the drawing perspective glLoadIdentity(); //Reset the drawing perspective glTranslatef(0.0f,0.0f,-5.0f); glPushMatrix(); glRotatef(_angle, 0.0f, 1.0f , 0.0f); glColor3f(0.5f,0.0f,0.8f); glBegin(GL_QUADS); //Begin quadrilateral coordinates //Trapezoid glVertex3f(-0.7f, -1.5f, 0.0f); glVertex3f(0.7f, -1.5f, 0.0f); glVertex3f(0.4f, -0.5f, 0.0f); glVertex3f(-0.4f, -0.5f, 0.0f); glEnd(); //End quadrilateral coordinates glPopMatrix(); glPushMatrix(); //push glRotatef(_angle, 1.0f, 0.0f, 0.0f); glBegin(GL_TRIANGLES); //Begin triangle coordinates Begin Pentagon glColor3f(1.0f,0.0f,0.0f); //Pentagon glVertex3f(0.5f, 0.5f, -0.0f); glVertex3f(1.5f, 0.5f, -0.0f); glVertex3f(0.5f, 1.0f, -0.0f); glVertex3f(0.5f, 1.0f, -0.0f); glVertex3f(1.5f, 0.5f, -0.0f); glVertex3f(1.5f, 1.0f, -0.0f); glVertex3f(0.5f, 1.0f, -0.0f); glVertex3f(1.5f, 1.0f, -0.0f); glVertex3f(1.0f, 1.5f, -0.0f); glEnd(); //end Pentagon glPopMatrix(); //pop glPushMatrix(); glRotatef(_angle, -1.0f, 1.0f, 0.0f); glBegin(GL_TRIANGLES); //Triangle glVertex3f(-0.5f, 0.5f, 0.0f); glColor3f(0.0f, 1.0f, 0.0f); glVertex3f(-1.0f, 1.5f, -0.0f); glColor3f(0.0f, 0.0f, 1.0f); glVertex3f(-1.5f, 0.5f, -0.0f); glEnd(); //End triangle coordinates glPopMatrix(); glutSwapBuffers(); //Send the 3D scene to the screen } void update(int value) { _angle+=2.0f; if(_angle&gt;360) _angle-=360; glutPostRedisplay(); glutTimerFunc(25,update,0); } int main(int argc, char** argv) { //Initialize GLUT glutInit(&amp;argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(400, 400); //Set the window size //Create the window glutCreateWindow("window"); initRendering(); //Initialize rendering //Set handler functions for drawing, keypresses, and window resizes glutDisplayFunc(drawScene); //display the "drwwScene" most important part, others are settings glutKeyboardFunc(handleKeypress); glutReshapeFunc(handleResize); glutTimerFunc(25,update,0); //add the timer function to make animation glutMainLoop(); //Start the main loop. glutMainLoop doesn't return. return 0; //This line is never reached } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload