2010-11-06 101 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(); 
} 
相关问题