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