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

从WebGL迁移至WebGL2着色器无几何输出问题咨询

问题解答

移植WebGL几何图形到WebGL2时,不需要额外的WebGL2专属调用就能完成基础渲染,你的问题出在顶点着色器的关键错误上。

核心问题分析

你的顶点着色器里只定义了自定义输出outPosition,但没有给WebGL的**内置顶点位置变量gl_Position**赋值。gl_Position是顶点着色器必须输出的裁剪空间坐标,GPU依赖这个值来确定顶点在屏幕上的位置。缺失这个赋值,GPU无法知道该把几何图形画在哪里,自然看不到任何输出。

修正后的顶点着色器

把顶点着色器里的输出逻辑调整为给gl_Position赋值即可:

#version 300 es

in vec3 a_position;

void main() {
    gl_Position = vec4(a_position, 1.0);
}

如果确实需要将位置数据传递到片元着色器,可以保留自定义输出变量,但必须同时赋值gl_Position:

#version 300 es

in vec3 a_position;
out vec4 outPosition;

void main() {
    gl_Position = vec4(a_position, 1.0);
    outPosition = gl_Position;
}

其他验证点(已确认无问题)

  • 你的几何坐标处于裁剪空间范围内(x/y/z值在[-1,1]区间),符合渲染要求
  • 深度测试开启后,图形z值0.5处于默认深度缓冲范围[0,1]内,不会被剔除
  • 顶点缓冲区、索引缓冲区的创建与绑定逻辑正确,gl.drawElements的参数也无错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:06:22