2010-11-06 99 views
0

我將以下代碼從OpenGL的紅皮書(Chapter 4: Display Lists)複製到我的編輯器(Visual Studio Express Edition 2008)中,並命名爲list.c,並且出現編譯錯誤。致命錯誤C1083:無法打開包含文件:'aux.h':權限被拒絕

#include "aux.h" 
#include <GL/gl.h> 
#include <GL/glu.h> 


GLuint listName = 1; 

void myinit (void) 
{ 
glNewList (listName, GL_COMPILE); 
     glColor3f(1.0, 0.0, 0.0); 
     glBegin (GL_TRIANGLES); 
      glVertex2f (0.0, 0.0); 
      glVertex2f (1.0, 0.0); 
      glVertex2f (0.0, 1.0); 
     glEnd(); 
     glTranslatef (1.5, 0.0, 0.0); 
    glEndList(); 
    glShadeModel (GL_FLAT); 
} 

void drawLine (void) 
{ 
    glBegin (GL_LINES); 
     glVertex2f (0.0, 0.5); 
     glVertex2f (15.0, 0.5); 
    glEnd(); 
} 

void display(void) 
{ 
    GLuint i; 
    glClear (GL_COLOR_BUFFER_BIT); 
    glColor3f(0.0, 1.0, 0.0); 
    for (i = 0; i < 10; i++) 
     glCallList (listName); 
    drawLine(); 
    glFlush(); 
} 

void myReshape(GLsizei w, GLsizei h) 
{ 
    glViewport(0, 0, w, h); 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    if (w <= h) 
     gluOrtho2D (0.0, 2.0, -0.5 * (GLfloat) h/(GLfloat) w, 
       1.5 * (GLfloat) h/(GLfloat) w); 
    else 
     gluOrtho2D (0.0, 2.0 * (GLfloat) w/(GLfloat) h, -0.5, 
       1.5); 
    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 
} 


int main(int argc, char** argv) 
{ 
    auxInitDisplayMode (AUX_SINGLE | AUX_RGBA); 
    auxInitPosition (0, 0, 400, 50); 
    auxInitWindow (argv[0]); 
    myinit(); 
    auxReshapeFunc (myReshape); 
    auxMainLoop(display); 
} 

回答

2

不要使用不aux,也不glaux。他們太老了。 GLUT要容易得多,而許多人使用SDLSFML(它們比GLUT更靈活,功能更全面)。您應該嘗試SFML - 它內部有很多功能,它很輕便便攜。你應該滿足使用這一個=)

不過,如果你想使用GLUT,這裏是你的問題:

  • glutInit()應 之前調用任何其它操作
  • glutInitDisplayMode()和其他 窗口函數必須在任何繪圖之前調用

操作

下面是一些示例代碼:

#include <GL/glut.h > 

// rendering function 
void display(void) 
{ 
    glClear(GL_COLOR_BUFFER_BIT); 

    glColor3f(1.0,1.0,1.0); 
    glBegin (GL_LINES); 
     glVertex2f (0.0, 0.5); 
     glVertex2f (15.0, 0.5); 
    glEnd(); 

    glFlush(); 
} 

// some initializations 
void init(void) 
{ 
    glClearColor(0.0, 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) 
{ 
    // initialize GLUT library 
    glutInit(&argc, argv); 

    // set display mode 
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); 

    // set initial window size 
    glutInitWindowSize(250,250); 

    // set initial window position 
    glutInitWindowPosition(100,100); 

    // create the window 
    glutCreateWindow("moofoo"); 

    // do our initialization routines 
    init(); 

    // set function which will be called each frame 
    glutDisplayFunc(display); 

    // enter main rendering loop 
    glutMainLoop(); 

    return 0; 
} 
1

您需要包含Windows頭文件。修復:

#include <windows.h> 
#include <GL/gl.h> 
#include <GL/glu.h> 
// etc... 
+0

如果我取代 「aux.h」 與我得到2個錯誤和5個警告。 – andandandand 2010-11-06 15:32:59

+0

如果我像你一樣離開「aux.h」加入,我仍然得到'can not include file'錯誤。 – andandandand 2010-11-06 15:35:26

+0

我不知道「aux.h」可能是什麼。它不是一個標準的#include文件,儘管它的名字類似於傳統的「glaux.h」頭文件。也許你會在書的下載檔案中找到的東西。 – 2010-11-06 15:45:33

0

我已經更改了放置glutXxx函數而不是auxXxx函數的代碼。它編譯但不運行,我會很感激這裏的反饋:

#include "GL/glut.h" 
#include <stdio.h> 
//#include <windows.h> 


GLuint listName = 1; 

void myinit (void) 
{ 
glNewList (listName, GL_COMPILE); 
     glColor3f(1.0, 0.0, 0.0); 
     glBegin (GL_TRIANGLES); 
      glVertex2f (0.0, 0.0); 
      glVertex2f (1.0, 0.0); 
      glVertex2f (0.0, 1.0); 
     glEnd(); 
     glTranslatef (1.5, 0.0, 0.0); 
    glEndList(); 
    glShadeModel (GL_FLAT); 
} 

void drawLine (void) 
{ 
    glBegin (GL_LINES); 
     glVertex2f (0.0, 0.5); 
     glVertex2f (15.0, 0.5); 
    glEnd(); 
} 

void display(void) 
{ 
    GLuint i; 
    glClear (GL_COLOR_BUFFER_BIT); 
    glColor3f(0.0, 1.0, 0.0); 
    for (i = 0; i < 10; i++) 
     glCallList (listName); 
    drawLine(); 
    glFlush(); 
} 

void myReshape(GLsizei w, GLsizei h) 
{ 
    glViewport(0, 0, w, h); 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    if (w <= h) 
     gluOrtho2D (0.0, 2.0, -0.5 * (GLfloat) h/(GLfloat) w, 
       1.5 * (GLfloat) h/(GLfloat) w); 
    else 
     gluOrtho2D (0.0, 2.0 * (GLfloat) w/(GLfloat) h, -0.5, 
       1.5); 
    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 
} 


int main(int argc, char** argv) 
{ 
    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGBA); 
    glutInitWindowPosition (100, 100); 


    glutInitWindowPosition (100,100); 
    glutInit (&argc, argv); 
    myinit(); 
    glutDisplayFunc (display); 
    glutReshapeFunc (myReshape); 
    glutMainLoop(); 
} 
相關問題