You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 14:45:58