使用单个着色器来纹理化点和三角形openGL ES 2

时间:2013-02-19 09:58:49

标签: opengl-es glsl

据我所知,你可以用一个点来表示你使用

gl_FragColor =  texture2D(Texture, gl_PointCoord);

并绘制三角形

gl_FragColor =  texture2D(Texture, TexCoorFromVertexShader);

所以如果我想要我们两个 - 点和三角形我该如何处理它。到目前为止,我正在考虑拥有多个程序并根据我绘制的内容切换它们,但这似乎是很多开销。或者这就是事情的运作方式?

1 个答案:

答案 0 :(得分:1)

您的假设是正确的,单独的着色器是可行的方法。单个GLSL程序中的多个if语句可能非常昂贵。在你的情况下,我敢打赌它们是一个真正的性能命中,因为查找将按顶点完成。

请阅读此处以获取更多信息:Shader branching question