Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在OpenGL中使用GLDraweElements绘制立方体?_C++_Opengl - Fatal编程技术网

C++ 如何在OpenGL中使用GLDraweElements绘制立方体?

C++ 如何在OpenGL中使用GLDraweElements绘制立方体?,c++,opengl,C++,Opengl,我在使用gldrawerelements绘制立方体时遇到问题。这是应该工作的代码,我在一些演示文稿中找到了它,但是我没有得到一个立方体,图像在调整大小时闪烁 代码如下: 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; /

我在使用gldrawerelements绘制立方体时遇到问题。这是应该工作的代码,我在一些演示文稿中找到了它,但是我没有得到一个立方体,图像在调整大小时闪烁

代码如下:

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);
以下是我在调整大小时得到的一些图像(有时我没有得到图像):

你对如何解决这个问题有什么建议吗?
提前感谢

索引类型与数据不对应

float* ind = new float[24];
glDrawElements(GL_QUADS, 24, GL_UNSIGNED_BYTE, ind);
您定义了一个浮点数组,但告诉OpenGL它包含无符号字节

阵列的正确版本为

GLubyte* ind = new GLubyte[24];