OpenGL ES 2:简单绘图需要顶点和片段着色器吗?

时间:2013-03-20 01:00:36

标签: opengl-es opengl-es-2.0 shader

我目前正在使用在运行时生成的几何图形处理一些绘图例程,并且只有平面颜色。在寻找最小的GL设置来进行我的绘图时(我匹配屏幕分辨率,我在iOS上,但问题也适用于其他ES 2平台),我看到了大多数示例使用顶点和片段着色器,但不是全部。

如果我不打算使用任何纹理或照明(只是直接彩色复制/混合),我不打算做任何无法通过操纵视图完成的转换矩阵,我真的需要设置顶点和/或片段着色器吗?如果没有,使用着色器比无着色器方法有什么优势吗?

1 个答案:

答案 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);
}

来源:Khronos Website & Docs

  

“OpenGL ES 2.0规范中的重大变化就是   OpenGL固定功能转换和片段管道不是   支持“。