фатальная ошибка C1083: не удается открыть включаемый файл: «aux.h»: разрешение запрещено - PullRequest
0 голосов
/ 06 ноября 2010

Я скопировал следующий код из Redbook OpenGL ( Глава 4: Отображаемые списки ) в мой редактор (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 ]

2 голосов
/ 07 ноября 2010

Не используйте ни aux, ни 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 голос
/ 06 ноября 2010

Вам необходимо включить заголовочный файл Windows. Исправлено:

#include <windows.h>
#include <GL/gl.h>
#include <GL/glu.h>
// etc...
0 голосов
/ 06 ноября 2010

Я изменил код, размещая функции 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...