Opengl es OpenGL固定函数着色器实现

Opengl es OpenGL固定函数着色器实现,opengl-es,opengl-es-2.0,Opengl Es,Opengl Es 2.0,有没有在OpenGLES2.0之上模拟OpenGLES1.1API的包装器?我一直在搜索,但找不到任何实际的实现。您可能会喜欢本教程:。它在CG中,但与GLSL非常相似,只需稍作调整,就可以将其转换为一个着色器,模仿Android上的固定功能管道 至于其他不推荐使用的函数,如glVertex*(),我建议不要使用它(它不推荐是有原因的)。另一方面,如果需要将某些软件从ES 1移植到ES 2,那么即使在上面编写包装也不难。 这旨在用ES 2.0着色器模拟ES 1.1,我自己不使用它,但会这样做 我

有没有在OpenGLES2.0之上模拟OpenGLES1.1API的包装器?我一直在搜索,但找不到任何实际的实现。

您可能会喜欢本教程:。它在CG中,但与GLSL非常相似,只需稍作调整,就可以将其转换为一个着色器,模仿Android上的固定功能管道

至于其他不推荐使用的函数,如glVertex*(),我建议不要使用它(它不推荐是有原因的)。另一方面,如果需要将某些软件从ES 1移植到ES 2,那么即使在上面编写包装也不难。


这旨在用ES 2.0着色器模拟ES 1.1,我自己不使用它,但会这样做

我目前正在研究同一个问题,只是偶然发现了这个项目:(OpenGL可移植层适用于OpenGL 2.x、3.x、4.x、核心上下文和ES 2.0)。我只想自己尝试一下,但读完这篇文章后,我相信这个库可能是解决这个问题的方法。

看看JOGL

有一些关于使用GLES 2.0模拟GLES 1.0中的固定管道的软件包:

package javax.media.opengl.fixedfunc;
package com.jogamp.opengl.util.glsl.fixedfunc;   
package jogamp.opengl.util.glsl.fixedfunc;
jogamp.opengl.util.glsl.fixedfunc.fixedfuncinpl类中的Javadoc

Composable pipeline, implementing the interface javax.media.opengl.GL2ES1
Each method follows the call graph:
* call prolog jogamp.opengl.util.glsl.fixedfunc.FixedFuncHook if available 
* call downstream javax.media.opengl.GL2ES2 if available and if no call to jogamp.opengl.util.glsl.fixedfunc.FixedFuncHook is made 

* Interface javax.media.opengl.GL2ES1 
* Prolog jogamp.opengl.util.glsl.fixedfunc.FixedFuncHook 
* Downstream javax.media.opengl.GL2ES2 

Sample code which installs this pipeline: 
     GL gl = drawable.setGL( new FixedFuncImpl( drawable.getGL().getGL2ES2(), new FixedFuncHook( drawable.getGL().getGL2ES2() ) ) );

此外,请看一看“OpenGL ES 2.0编程指南”(Aaftab Munshi at alli.)。有一些关于模拟GLES 1.0 FFP的着色器示例。

虽然我不能指出这样的包装器,但我建议您尝试自己编写这样的包装器,只是为了培训。编写着色器来模拟固定函数管道是一个很好的练习,可以了解更多关于固定函数概念的实际工作原理,直到您意识到,模拟固定函数OpenGL ES 1.1 API并不是使用OpenGL ES 2.0的最灵活或最有效的方法。如果您阅读了OpenGL ES 2.0编程指南,他们试图实现固定功能管道的一部分。可以很快看出,这不是一项简单的任务。我真的不明白你为什么想要这个-为什么不直接使用OpenGLES1.1。我不知道有哪个2.0GPU不支持1.1WebGL,只支持OpenGLES2.0。我有一大堆代码需要从OpenGLES1.1移植到2.0。我没有改变大量的代码,而是逐渐从ES1.1仿真切换到2.0,这样我就可以运行测试,看看什么时候出现问题。这是针对特定平台的吗?例如,一个C解决方案就足够了(尽管你不能将它用于Android上的Dalvik应用程序),或者甚至是一个只用于iPhone或其他产品的封闭源代码专有解决方案?C就可以了。封闭源代码不是,因为它必须在一大堆平台上工作(大多数CS都没有)。我现在开始用C++编写它。