You need to enable JavaScript to run this app. LWJGL3 可正常清空颜色缓冲但无法渲染三角形问题求助
优惠活动
大模型
产品
解决方案
定价
更多

LWJGL3 可正常清空颜色缓冲但无法渲染三角形问题求助

问题原因

1. 绘制函数参数顺序错误

Renderer类的render方法里glDrawArrays的参数传反了,该函数的参数定义为:

glDrawArrays(int mode, int first, int count)
  • 第二个参数是顶点起始索引,你的场景应传0
  • 第三个参数是要绘制的顶点总数,你的场景应传model.getVertexCount()
    你当前代码写的是GL11.glDrawArrays(GL11.GL_TRIANGLES,model.getVertexCount(),0);,相当于从索引3的位置开始绘制0个顶点,自然没有任何渲染结果。
    修复后代码:
GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, model.getVertexCount());

2. 缺少核心模式要求的着色器程序

你使用的是OpenGL 3.2核心模式,核心模式完全移除了固定渲染管线,必须自行编写并绑定顶点着色器、片段着色器才能正常渲染图形,你当前代码没有任何着色器相关逻辑,这也是无法渲染出图形的核心原因。
你需要补充以下逻辑:

  • 编写顶点着色器,接收顶点位置输入,输出裁剪空间坐标
  • 编写片段着色器,输出三角形的颜色值
  • 编译链接着色器为着色器程序,渲染时绑定激活该程序

临时验证方案

如果你想快速验证顶点数据逻辑是否正常,可以先把窗口配置里的核心模式改成兼容模式,暂时使用固定管线测试:
修改Window类里的窗口配置代码,把:

GLFW.glfwWindowHint(GLFW.GLFW_OPENGL_PROFILE,GLFW.GLFW_OPENGL_CORE_PROFILE);

改成:

GLFW.glfwWindowHint(GLFW.GLFW_OPENGL_PROFILE,GLFW.GLFW_OPENGL_COMPAT_PROFILE);

先修复glDrawArrays的参数错误后,就能正常看到三角形渲染结果,后续再补充着色器逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 01:33:02