【发布时间】:2013-07-02 21:20:22
【问题描述】:
我正在尝试编写一个小的 Opengl 程序来仅使用顶点缓冲区对象(不使用 VAO)来绘制一个三角形,但是每当我想编译它时,它只会显示一个蓝屏
这是我的代码
#include <iostream>
#include <GLUT/glut.h>
#include <OpenGL/gl3.h>
GLuint VBO;
GLuint VAO;
void display();
float vertex[] = {-1.0, 0.0 , 0.0,
0.0 , 1.0 , 0.0 ,
1.0 , 0.0 , 0.0 };
int main (int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE);
glutInitWindowSize(1000, 400);
glutInitWindowPosition(100, 100);
glutCreateWindow("My First GLUT/OpenGL Window");
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
void display()
{
glClearColor(0, 0, 1,1);
glClear(GL_COLOR_BUFFER_BIT);
glGenBuffers(1,&VBO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER,9 *sizeof(vertex),vertex, GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3,GL_FLOAT, GL_TRUE, 0, 0);
glDrawArrays(GL_TRIANGLES, 0, 3);
glDisableVertexAttribArray(0);
glutSwapBuffers();
};
【问题讨论】:
-
你的着色器在哪里?或者,你为什么不使用
glVertexPointer()? -
我是 Opengl 编程的新手,我想探索使用 opengl 绘制的不同方法,所以按照一些在线教程(没有涵盖程序的所有内容)我想出了这段代码,不过我知道我们应该提供我们的着色器程序..
标签: c++ opengl graphics 3d vbo