我尝试编写我的第一个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版本