为什么我的WebGL着色器编译后无法显示红色三角形?
我尝试用WebGL绘制一个红色三角形,但屏幕上只显示黑色,控制台也没有报错。检查过代码,顶点和片段着色器的编译状态都是成功的,但就是看不到颜色。我按教程写的代码,但哪里出问题了?
顶点着色器代码:
const vertexShaderSource = <code>#version 300 es
in vec4 a_position;
void main() {
gl_Position = a_position;
}</code>;
片段着色器:
const fragmentShaderSource = <code>#version 300 es
precision mediump float;
out vec4 outColor;
void main() {
outColor = vec4(1.0, 0.0, 0.0, 1.0);
}</code>;
初始化时启用了顶点属性,但可能哪里漏了?比如没设置顶点数据或者没清除颜色缓冲?尝试过用gl.clearColor(0, 0, 0, 1)和gl.clear(gl.COLOR_BUFFER_BIT),但没效果。
如果还是不行,检查着色器程序是否正确链接,用
gl.useProgram(program)确保启用了正确的程序对象。