Glsl 在这种情况下,我应该在片段着色器中编写逻辑吗?
我有3个目标:Glsl 在这种情况下,我应该在片段着色器中编写逻辑吗?,glsl,webgl,Glsl,Webgl,我有3个目标: 立方 立方 立方 我想画: 立方1为红色(1,0,0) 带纹理1的立方体2 立方体3和纹理2 在片段着色器中,我使用 FragColor=颜色*纹理2D(u_纹理,纹理坐标) 和往常一样,但这段代码也用纹理颜色绘制了我的第一个立方体,我希望它只有红色。所以颜色混淆了。我的问题是,我是否应该在片段着色器中编写一个逻辑来区分这些情况?创建一个具有单一(白色)颜色的1x1纹理,并将其用于统一颜色的立方体。 绑定和使用此纹理比更改着色器程序“便宜得多”: let whiteTe
- 立方
- 立方
- 立方
- 立方1为红色(1,0,0)
- 带纹理1的立方体2
- 立方体3和纹理2
FragColor=颜色*纹理2D(u_纹理,纹理坐标)
和往常一样,但这段代码也用纹理颜色绘制了我的第一个立方体,我希望它只有红色。所以颜色混淆了。我的问题是,我是否应该在片段着色器中编写一个逻辑来区分这些情况?创建一个具有单一(白色)颜色的1x1纹理,并将其用于统一颜色的立方体。 绑定和使用此纹理比更改着色器程序“便宜得多”:
let whiteTexture=gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D,白色纹理);
gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,1,1,0,gl.RGBA,gl.UNSIGNED_字节,
新的UINT8阵列([255255]);
gl.texParameteri(gl.TEXTURE\u 2D,gl.TEXTURE\u MAG\u过滤器,gl.NEAREST);
gl.texParameteri(gl.TEXTURE\u 2D,gl.TEXTURE\u MIN\u过滤器,gl.NEAREST);
注意,对该纹理的查找(texture2D(u_纹理,TextureCoordinates)
)将始终返回vec4(1.0)
如果纹理已绑定(到指定给u\u纹理的纹理单元
),则
FragColor=颜色*纹理2D(u_纹理,纹理坐标);
将设置与相同的碎片颜色
FragColor=Color*vec4(1.0);
如果不想切换着色器,请创建一个具有单一(白色)颜色的1x1纹理,并将其用于均匀颜色的立方体。绑定纹理比更改程序要“便宜”得多。谢谢。。。如果你回答,我可以把这当作回答。我认为切换着色器对我来说更容易。