OpenGL glGenBuffers函数不起作用

时间:2015-08-05 15:07:37

标签: opengl glut

我尝试编写我的第一个OpenGL程序。此代码成功运行:

#include <iostream>
   #include <glut.h>

   float angle = 0.0f;

   void changeSize(int w, int h) {
    if (h == 0)
        h = 1;
    float ratio =  w * 1.0 / h;
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glViewport(0, 0, w, h);
    gluPerspective(45.0f, ratio, 0.1f, 100.0f);

    glMatrixMode(GL_MODELVIEW);
    }

    void renderScene(void) {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    // обнуление трансформации
    glLoadIdentity();
    // установка камеры
    gluLookAt( 0.0f, 0.0f, 10.0f,
           0.0f, 0.0f,  0.0f,
           0.0f, 1.0f,  0.0f);

    glRotatef(angle, 0.0f, 1.0f, 0.0f);

    glBegin( GL_POINTS);
                for (double x = -3.0; x < 3.0; x+=0.09){
            for (double y = -3.0; y<3.0; y+=0.1){
                double t = x*x/5 - y*y/5;
                glVertex3f(x,t, y);
                glColor3f(t, t, 1);
            }
        }

    glEnd();



    angle+=0.1f;

    glDrawArrays(GL_TRIANGLES, 0, 3);

    glutSwapBuffers();
    }

    int main(int argc, char **argv) {

    // Инициализация GLUT и создание окна
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA | GLUT_MULTISAMPLE    );
    glutInitWindowPosition(100,100);
    glutInitWindowSize(400,400);
    glutCreateWindow("Урок 3");

    std::cout<<glGetString(GL_VERSION);
    // регистрация
    glutDisplayFunc(renderScene);
    glutReshapeFunc(changeSize);
    glutIdleFunc(renderScene);

    // основной цикл
    glutMainLoop();

    return 1;
    }

但是当我尝试这个片段时:

static const GLfloat g_vertex_buffer_data[] = { 
        -1.0f, -1.0f, 0.0f,
         1.0f, -1.0f, 0.0f,
         0.0f,  1.0f, 0.0f,
    };

        // Это будет идентификатором нашего буфера вершин
    GLuint vertexbuffer;

    // Создадим 1 буфер и поместим в переменную vertexbuffer его идентификатор
    glGenBuffers(1, &vertexbuffer);

    // Сделаем только что созданный буфер текущим
    glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);

    // Передадим информацию о вершинах в OpenGL
    glBufferData(GL_ARRAY_BUFFER, sizeof(g_vertex_buffer_data), g_vertex_buffer_data, GL_STATIC_DRAW);

我遇到了一个错误。 glGenBuffers现在未定义。哪里一定是我的错误?

P.S OpenGL有4.5版本

0 个答案:

没有答案