据我所知,绘制一个你使用的点
gl_FragColor = texture2D(Texture, gl_PointCoord);
并映射一个三角形
gl_FragColor = texture2D(Texture, TexCoorFromVertexShader);
因此,如果我想对我们俩-点和三角形,我该如何处理。到目前为止,我正在考虑拥有多个程序并根据我要绘制的内容来切换它们,但这似乎是很多开销。或者事情就是这样运作的?
你的假设是正确的,单独的着色器是要走的路。if
单个 GLSL 程序中的多个语句可能非常昂贵。在您的情况下,我敢打赌它们是真正的性能打击,因为查找将按顶点完成。
在此处阅读以获取更多信息:着色器分支问题