致命错误C1083:无法打开包含文件:'aux.h':权限被拒绝

时间:2010-11-06 15:15:13

标签: c visual-studio opengl

我将以下代码从OpenGL的红皮书(Chapter 4: Display Lists)复制到我的编辑器(Visual Studio Express Edition 2008)中,命名为list.c并出现编译错误。

#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);
}

3 个答案:

答案 0 :(得分:2)

不要使用不辅助,也不要使用glaux。他们太老了。 GLUT 更容易,而许多人使用 SDL SFML (他们比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 :(得分:1)

您需要包含Windows头文件。修正:

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

答案 2 :(得分: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();
}