C++ OpenGL新手求助:第三个顶点位置始终固定为0.0
问题分析与解决
你的问题出在glVertexAttribPointer的参数设置上:
你定义的顶点数组positions里,每个顶点只有2个浮点分量(x和y),但调用glVertexAttribPointer(0, 3, ...)时,第二个参数指定了每个顶点需要读取3个浮点分量。这会导致OpenGL解析顶点数据时出现错位:
- 第一个顶点错误读取
0.8f, -0.8f, -0.8f(前三个float) - 第二个顶点错误读取
-0.8f, 0.0f, 0.8f - 第三个顶点没有足够的数据支撑,只能读取到内存默认值(0.0)
修复方法
把glVertexAttribPointer的第二个参数从3改为2,匹配你实际的顶点分量数量:
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(float) * 2, 0);
修改后OpenGL会按每个顶点2个分量正确解析positions数组,第三个顶点的(0.0f, 0.8f)就能正常渲染了。
内容的提问来源于stack exchange,提问作者stackaccount
相关产品推荐
相关产品推荐

