opengl =中缓冲区数据的问题仅在我缓冲比需要更多的字节时绘制
Issue with buffer data in opengl = only draws if I buffer more bytes than needed
这是代码main.cpp和着色器的粘贴箱。它使用了devIL、glload和glfw。在windows和linux上运行。
我以相当正常的方式缓冲我的数据。只是一个简单的三角形。
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
//vX vY vZ vW nX nY nZ U V
float bufferDataThree[9*3] = {
-1.0f, -1.0f, 0.0f,1.0f, 0.0f,1.0f,0.0f, 0.0f,0.0f,
1.0f, -1.0f, 0.0f,1.0f, 0.0f,1.0f,0.0f, 0.0f,1.0f,
1.0f, 1.0f, 0.0f,1.0f, 0.0f,1.0f,0.0f, 1.0f,1.0f};
//TOTAL 4 + 3 + 2 = 9;
glBufferData(GL_ARRAY_BUFFER, (9*3)*4, bufferDataThree, GL_STATIC_DRAW); //Doesnt Work
//glBufferData(GL_ARRAY_BUFFER, (10*3)*4, bufferDataThree, GL_STATIC_DRAW); //Works
有9*3 = 27个浮点数。因此是108字节。如果我缓冲108字节,它会搞砸纹理坐标。如果我缓冲116字节,(2浮动更多)它呈现良好。
My display method.
void display()
{
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glUseProgram(program);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D,tbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, (4 + 3 + 2)*sizeof(float), 0);
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, (4 + 3 + 2)*sizeof(float),(void*) (4*sizeof(float)));
glEnableVertexAttribArray(2);
glVertexAttribPointer(2, 4, GL_FLOAT, GL_FALSE, (4 + 3 + 2)*sizeof(float),(void*) ((4+3)*sizeof(float)));
glDrawArrays(GL_TRIANGLES,0,3);
glDisableVertexAttribArray(0);
glUseProgram(0);
glfwSwapBuffers();
}
怎么会这样?
glVertexAttribPointer
的第二个参数是组件数,对于纹理编码是2,对于normal是3。
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 在UNIX系统中使用DIR查找文件的字节大小
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- QuadTree只在窗口的右上角绘制
- 绘制旋转的三角形
- std::当在256字节边界上写入整数时,流的奇怪行为
- flutter:即使shouldRepaint()返回true,自定义画家也不会重新绘制
- 当比特(而不是字节)的顺序至关重要时的持久性
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 如何在文件中查找字节序列
- luaL_dofile在已知良好的字节码上失败,可以使用未编译的版本
- 字节到位运算符重载C++
- 在java中读取c++字节的位字段
- 如何在QT中的自定义视频小工具t上绘制矩形
- 如何在Visual Basic中使用矩形函数OpenGL绘制矩形
- 无法使用VAO和EBO(openGL)绘制多个对象
- 如何使用 WinAPI 将文本绘制到字节数组
- opengl =中缓冲区数据的问题仅在我缓冲比需要更多的字节时绘制
- wxImage并绘制原始rgb字节