警告:尝试学习OpenGL ......
我用以下代码绘制了一个正方形。
static const GLfloat squareVertices[] = {
-0.5f, -0.33f,
0.5f, -0.33f,
-0.5f, 0.33f,
0.5f, 0.33f,
};
...
glVertexAttribPointer(ATTRIB_VERTEX, 2, GL_FLOAT, 0, 0, squareVertices);
glEnableVertexAttribArray(ATTRIB_VERTEX);
...
glVertexPointer(2, GL_FLOAT, 0, squareVertices);
很自然地,我想添加两个顶点并获得六边形。相反,我有像折纸折叠的正方形:
static const GLfloat hexagonVertices[] = {
-0.5f, -0.33f,
+0.0f, -0.66f,
+0.5f, -0.33f,
+0.75f, +0.33f,
-0.1f, +0.5f,
+0.25f, +0.33f,
};
...
glVertexAttribPointer(ATTRIB_VERTEX, 3, GL_FLOAT, 0, 0, hexagonVertices);
glEnableVertexAttribArray(ATTRIB_VERTEX);
...
glVertexPointer(3, GL_FLOAT, 0, hexagonVertices);
我甚至尝试更改顶点以影响形状。我可以把方形变成一个不规则的四边形多边形,我可以歪斜“六边形”,但它仍然只是一张折叠的纸。
我可以这样做吗?
首选的替代方式是什么?
答案 0 :(得分:1)
您的问题来自于glVertexAttribPointer的第二个参数中发送值3
这告诉opengl每个顶点使用3个坐标而不是你想要的两个坐标。由于你有12个浮点数,这将成为4个顶点,因此是正方形。
编辑:哦,你需要glVertexPointer的第一个参数也是2。