如何使用glDrawElements在OpenGL中绘制立方体
How to draw a cube in OpenGL using glDrawElements?
我在使用glDrawElements绘制多维数据集时遇到问题。这是应该工作的代码,我在一些演示中发现了它,但我没有得到立方体,图像在调整大小时闪烁。
这是代码:
float a = 1;
float* vert = new float[24];
float* col = new float[24];
float* ind = new float[24];
vert[0] = -a / 2; vert[1] = -a / 2; vert[2] = a / 2; //vert0
vert[3] = a / 2; vert[4] = -a / 2; vert[5] = a / 2; //vert1
vert[6] = a / 2; vert[7] = a / 2; vert[8] = a / 2; //vert2
vert[9] = -a / 2; vert[10] = a / 2; vert[11] = a / 2; //vert3
vert[12] = -a / 2; vert[13] = -a / 2; vert[14] = -a / 2; //vert4
vert[15] = a / 2; vert[16] = -a / 2; vert[17] = -a / 2; //vert5
vert[18] = a / 2; vert[19] = a / 2; vert[20] = -a / 2; //vert6
vert[21] = -a / 2; vert[22] = a / 2; vert[23] = -a / 2; //vert7
col[0] = 0.0; col[1] = 0.0; col[2] = 0.0; //col10
col[3] = 1.0; col[4] = 0.0; col[5] = 0.0; //col11
col[6] = 1.0; col[7] = 1.0; col[8] = 0.0; //col12
col[9] = 1.0; col[10] = 1.0; col[11] = 1.0; //col13
col[12] = 0.0; col[13] = 1.0; col[14] = 0.0; //col14
col[15] = 0.0; col[16] = 1.0; col[17] = 1.0; //col15
col[18] = 0.0; col[19] = 0.0; col[20] = 1.0; //col16
col[21] = 0.0; col[22] = 0.0; col[23] = 0.0; //col17
//indeksi
ind[0] = 0; ind[1] = 1; ind[2] = 2; ind[3] = 3; //quad0
ind[4] = 1; ind[5] = 5; ind[6] = 6; ind[7] = 2; //quad1
ind[8] = 7; ind[9] = 6; ind[10] = 5;ind[11] = 4; //quad2
ind[12] = 0;ind[13] = 3;ind[14] = 7;ind[15] = 4; //quad3
ind[16] = 7;ind[17] = 3;ind[18] = 2;ind[19] = 6; //quad4
ind[20] = 0;ind[21] = 4;ind[22] = 5;ind[23] = 1; //quad5
glVertexPointer(3, GL_FLOAT, 0, vert);
glColorPointer(3, GL_FLOAT, 0, col);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glDrawElements(GL_QUADS, 24, GL_UNSIGNED_BYTE, ind);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
以下是我在调整大小时得到的一些图像(有时我没有得到图像):OpenGl多维数据集glDrawElements
你对如何解决这个问题有什么建议吗?提前感谢
索引类型与数据不对应。
float* ind = new float[24];
glDrawElements(GL_QUADS, 24, GL_UNSIGNED_BYTE, ind);
您定义了一个浮点数组,但告诉OpenGL它包含无符号字节。
阵列的正确版本是
GLubyte* ind = new GLubyte[24];
相关文章:
- 如何使用 std::累积在 C++ 中计算总和立方体
- QuadTree只在窗口的右上角绘制
- Opengl 和 c++ 绘制多个立方体
- 为什么在GLFW窗口中没有用这个代码在我的屏幕上绘制立方体
- 在版本 440 核心中绘制具有纹理的立方体的顶点和片段着色器应该是什么
- C++/OpenGL-用VBO绘制立方体
- 如何使用 glDrawElements() 绘制硬表面立方体
- 在 OpenGL 中绘制立方体。迭代代码较短,但不起作用
- 如何绘制一个所有面都有不同纹理的立方体
- 在 OpenGL 中绘制一个实体立方体
- 使用鼠标在 Opengl 中绘制一个立方体
- OpenGL 3.2+ 围绕现有顶点绘制立方体
- 如何使用glDrawElements在OpenGL中绘制立方体
- OpenGL -当我在立方体上绘制边界时,会出现额外的线
- 在c++中绘制填充立方体,崩溃,没有有用的错误可以跟踪
- SFML + OpenGL:无法绘制立方体
- c++ OpenGL, GLFW绘制一个简单立方体
- c++旋转立方体坐标(非绘制)
- 如何在某些世界坐标下绘制立方体,OpenGL
- D3D9从Vertexbuffer绘制100k立方体非常慢