OpenGL ES 2.0和着色器

时间:2013-04-19 14:20:35

标签: android opengl-es-2.0

两个问题:

  1. 有没有办法在不使用OpenGL ES 2.0中的着色器的情况下渲染到屏幕?

  2. 我是否可以使用默认的顶点和片段着色器来代替定义自己的?

  3. 除了将我的脑袋包裹在OpenGL ES 2.0周围之外,我没有尝试过任何其他事情。

2 个答案:

答案 0 :(得分:1)

  1. 不,不在ES 2.0中。

  2. 不是内置的,但你可能会在网上找到一些。虽然合理的默认着色器的作用很大程度上取决于你真正想做的事情。你只想渲染彩色图元吗?在2D还是3D?你需要照明吗?哪些参数定义了你的灯?你想要纹理吗?那些相当基本的问题已经定义了着色器的样子。

  3. 一方面,问题在于您需要根据每种情况使用不同的着色器并渲染您想要实现的样式。但另一方面,如果适应特定用例,那些着色器将不会那么复杂。一个简单的3D照明顶点着色器不需要大于5行代码(仅限实际的着色器函数)和相应的片段着色器,可以对一行代码进行纹理化。

    但是,您不会了解着色器的工作原理以及如何与它们进行交互。一旦你得到这个,为通常的用例编写自己的着色器就变得轻而易举。我建议你看一些关于OpenGL ES 2.0的好教程或书。这应该正确地介绍着色器的基本原理以及如何实现通常的标准计算,如顶点变换,光照,纹理化。

答案 1 :(得分:0)

不幸的是,OpenGL ES 2.0没有定义任何默认着色器。

OpenGL ES 1.0仅是固定管道,不允许着色器定义,而OpenGL ES 2.0允许着色器定义,但不包括任何固定管道(即默认着色器)