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

WebGL仅靠矩阵绘制正方形时如何移除代码中的顶点位置相关逻辑

WebGL无顶点数据绘制正方形实现方案

实现原理

WebGL2 顶点着色器提供内置变量gl_VertexID,可以直接获取当前绘制顶点的序号,我们直接在着色器内部预设正方形需要的6个顶点坐标,不需要在CPU侧定义、上传任何顶点数据。

顶点着色器修改

替换你原来的顶点着色器代码即可,u_matrix矩阵的使用逻辑和原有逻辑完全兼容:

#version 300 es
uniform mat4 u_matrix;
out vec2 v_texcoord;
void main() {
    // 内置的6个顶点坐标,和你之前上传的顶点数据完全匹配
    vec2 positions[6] = vec2[6](
        vec2(0.0, 0.0),
        vec2(0.0, 1.0),
        vec2(1.0, 0.0),
        vec2(0.0, 1.0),
        vec2(1.0, 1.0),
        vec2(1.0, 0.0)
    );
    vec2 currentPos = positions[gl_VertexID];
    gl_Position = u_matrix * vec4(currentPos, 0.0, 1.0);
    v_texcoord = currentPos;
}

JavaScript侧修改

  • 直接删除你提到的gl.bufferData顶点数据上传代码,以及所有和顶点属性相关的逻辑:包括顶点缓冲区创建、gl.bindBuffer、gl.vertexAttribPointer、gl.enableVertexAttribArray调用。
  • 绘制时直接执行gl.drawArrays(gl.TRIANGLES, 0, 6)即可,不需要绑定任何顶点缓冲区。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:06:02