1
J'essaie de créer une application GLUT. À l'heure actuelle, j'ai ce code:Erreur de bus lors de l'utilisation de GLUT
void init (GLvoid) // Create Some Everyday Functions
{
glShadeModel(GL_SMOOTH); // Enable Smooth Shading
glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Black Background
glClearDepth(1.0f); // Depth Buffer Setup
glEnable(GL_DEPTH_TEST); // Enables Depth Testing
glDepthFunc(GL_LEQUAL); // The Type Of Depth Testing To Do
glEnable (GL_COLOR_MATERIAL);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
}
void display (void) // Create The Display Function
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer
glLoadIdentity(); // Reset The Current Modelview Matrix
glTranslatef(-1.5f,0.0f,-6.0f); // Move Left 1.5 Units And Into The Screen 6.0
glBegin(GL_TRIANGLES); // Drawing Using Triangles
glVertex3f(0.0f, 1.0f, 0.0f); // Top
glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left
glVertex3f(1.0f,-1.0f, 0.0f); // Bottom Right
glEnd(); // Finished Drawing The Triangle
glTranslatef(3.0f,0.0f,0.0f); // Move Right 3 Units
glBegin(GL_QUADS); // Draw A Quad
glVertex3f(-1.0f, 1.0f, 0.0f); // Top Left
glVertex3f(1.0f, 1.0f, 0.0f); // Top Right
glVertex3f(1.0f,-1.0f, 0.0f); // Bottom Right
glVertex3f(-1.0f,-1.0f, 0.0f); // Bottom Left
glEnd();
glutSwapBuffers ();
// Swap The Buffers To Not Be Left With A Clear Screen
}
void reshape (int w, int h) // Create The Reshape Function (the viewport)
{
glViewport (0, 0, w, h);
glMatrixMode (GL_PROJECTION); // Select The Projection Matrix
glLoadIdentity (); // Reset The Projection Matrix
if (h==0) // Calculate The Aspect Ratio Of The Window
gluPerspective (80, (float) w, 1.0, 5000.0);
else
gluPerspective (80, (float) w/(float) h, 1.0, 5000.0);
glMatrixMode (GL_MODELVIEW); // Select The Model View Matrix
glLoadIdentity (); // Reset The Model View Matrix
}
void keyboard (unsigned char key, int x, int y) // Create Keyboard Function
{
switch (key) {
case 27: // When Escape Is Pressed...
exit (0); // Exit The Program
break; // Ready For Next Case
default: // Now Wrap It Up
break;
}
}
void arrow_keys (int a_keys, int x, int y) // Create Special Function (required for arrow keys)
{
switch (a_keys) {
case GLUT_KEY_UP: // When Up Arrow Is Pressed...
glutFullScreen (); // Go Into Full Screen Mode
break;
case GLUT_KEY_DOWN: // When Down Arrow Is Pressed...
glutReshapeWindow (500, 500); // Go Into A 500 By 500 Window
break;
default:
break;
}
}
int main(int argc, char *argv[]) {
glutInit(&argc, argv);
init();
glutInitDisplayMode (GLUT_RGB | GLUT_DOUBLE); // Display Mode
glutInitWindowSize (500, 500); // If glutFullScreen wasn't called this is the window size
glutCreateWindow ("NeHe's OpenGL Framework"); // Window Title (argv[0] for current directory as title)
glutFullScreen (); // Put Into Full Screen
glutDisplayFunc (display); // Matching Earlier Functions To Their Counterparts
glutReshapeFunc (reshape);
glutKeyboardFunc (keyboard);
glutSpecialFunc (arrow_keys);
glutMainLoop (); // Initialize The Main Loop
return 0;
}
Le seul résultat est Bus error
dans mon terminal. Je compile en utilisant GCC d'Apple sous Mac OS X 10.5, lié aux frameworks OpenGL et GLUT.
Quelqu'un peut-il m'aider?