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

OpenGL仅渲染第二个三角形,第一个三角形不可见问题排查

排查OpenGL双三角形仅第二个渲染的问题
  • 着色器程序未正确激活:渲染第一个三角形前,必须调用glUseProgram(p1)切换到对应着色器程序。如果全程用p2的程序,第一个三角形的顶点会被错误着色器处理,导致不可见。
  • 顶点属性未启用或配置错误:绑定第一个VBO后,要通过glVertexAttribPointer正确配置顶点属性的位置、数据类型、步长,并且调用glEnableVertexAttribArray启用对应属性索引。缺了这一步,GPU无法读取第一个三角形的顶点数据。
  • 绘制调用参数错误:检查第一个三角形的glDrawArrays(GL_TRIANGLES, 0, 3)参数是否正确——顶点数量必须是3,绘制模式不能错。参数错误会直接导致GPU不执行绘制。
  • 位置重叠导致遮挡:如果两个三角形Z轴坐标相同,第二个会覆盖第一个。可以调整第一个三角形的Z值(比如设为-0.5,第二个设为0),或者临时关闭深度测试(glDisable(GL_DEPTH_TEST))验证。
  • 第一个着色器逻辑错误:检查p1的顶点着色器是否正确赋值gl_Position,片段着色器是否输出可见颜色(比如不要输出vec4(0.0)全黑)。着色器逻辑错误会让三角形渲染后不可见。
  • VBO数据上传失败:确认第一个顶点数据是否正确传入GPU。可以用glGetBufferSubData读取VBO内容,和原始数据对比,排查数据上传过程中的错误。

内容的提问来源于stack exchange,提问作者Denis L

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 06:22:04