我目前正在使用在运行时生成的几何图形处理一些绘图例程,并且只有平面颜色。在寻找最小的GL设置来进行我的绘图时(我匹配屏幕分辨率,我在iOS上,但问题也适用于其他ES 2平台),我看到了大多数示例使用顶点和片段着色器,但不是全部。
如果我不打算使用任何纹理或照明(只是直接彩色复制/混合),我不打算做任何无法通过操纵视图完成的转换矩阵,我真的需要设置顶点和/或片段着色器吗?如果没有,使用着色器比无着色器方法有什么优势吗?
答案 0 :(得分:4)
据我所知,是的,它们是必要的。 OpenGL ES 2.0与OpenGL ES 1.x不向后兼容,两者之间的主要区别是自定义着色器。
使用着色器(2.0)或不使用着色器(1.x)的优势取决于应用程序的当前和长期功能,但1.x的固定功能管道很快就会成为过去。最近发布的OpenGL ES 3.0规范向后兼容2.0,但不是1.x。
OpenGL ES 2.0使用可编程管道,因此您必须始终声明顶点和片段着色器。您可以为几何+颜色声明的最简单的是:
// Vertex Shader
attribute vec3 position;
void main(void)
{
gl_Position = vec4(position, 1.0);
}
和
// Fragment Shader
uniform lowp vec3 color;
void main(void)
{
gl_FragColor = vec4(color, 1.0);
}
“OpenGL ES 2.0规范中的重大变化就是 OpenGL固定功能转换和片段管道不是 支持“。