绑定的VAO问题
VAO problems with bind
帮助查找错误。
我想捆绑是不对的。在"显示"中,我使用了VBO -一切正常。
但当我使用VAO -我黑屏。
void createVAO(GLuint *_vId, GLuint *_cId, GLuint *_tId, GLuint *_vao) {
glGenVertexArrays(1, _vao);
glBindVertexArray(*_vao);
glEnableClientState( GL_VERTEX_ARRAY );
glBindBuffer(GL_ARRAY_BUFFER, *_vId );
glVertexPointer( 3, GL_FLOAT, 0, 0 );
glBindVertexArray(0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); }
void createVBO(GLuint *_vId, GLuint *_cId, GLuint *_tId) {
glGenBuffers(1, _vId);
glBindBuffer(GL_ARRAY_BUFFER, *_vId);
glBufferData(GL_ARRAY_BUFFER, sizeof(XYZ) * cubeVerticesCount, cubePositions, GL_STATIC_DRAW );
glBindBuffer(GL_ARRAY_BUFFER, 0); }
void display() {
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0, 0, -800);
glRotatef(rotate.angle_x, 1, 0, 0);
glRotatef(rotate.angle_y, 0, 1, 0);
glScalef(zoom,zoom,zoom);
// VAO - dont work
glColor3f(1.0f,1.0f,1.0f);
glBindVertexArray(vao);
glDrawElements(GL_POINTS, 0, GL_UNSIGNED_INT, NULL);
glBindVertexArray(0);
// VBO - work
//glEnableClientState( GL_VERTEX_ARRAY );
//glBindBuffer( GL_ARRAY_BUFFER, vId );
//glVertexPointer( 3, GL_FLOAT, 0, 0 );
//glDrawArrays(GL_POINTS, 0, cubeVerticesCount);
//glDisableClientState(GL_VERTEX_ARRAY);
calculateFPS();
glutSwapBuffers(); }
完整的源代码。http://codepad.org/I87AxDl4
VAO中没有索引缓冲区。GL_ELEMENT_ARRAY_BUFFER
为VAO状态部分。所以当你绑定一个VAO时,绑定到GL_ELEMENT_ARRAY_BUFFER
的内容将更改为VAO的元素数组缓冲区。
您需要在绑定VAO之后绑定createVAO
中的元素缓冲区(但在解除绑定之前)。
您在VAO中使用glDrawElements
而没有任何GL_ELEMENT_ARRAY_BUFFER
你可能想使用glDrawArrays
,就像你的// VBO - work
一样
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- Project Euler问题4的错误解决方案
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 静态数据成员的问题-修复链接错误会导致编译器错误
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 一个关于在C++中重载布尔运算符的问题
- 首要问题的答案让值班员搞错了
- setlocale的C++土耳其字符串问题
- 如何重构类层次结构以避免菱形问题
- 基于boost的程序的静态链接——zlib问题
- 两个不同的对象 OpenGL.VAO VBO IBO 网格失真问题
- 绑定的VAO问题