【发布时间】:2012-09-21 13:07:38
【问题描述】:
我正在尝试制作某种可在 PC 和 Android 上使用的 OpenGL 包装器。
我的方法是创建一个包含所有 OpenGL 函数的抽象 OpenGL 类,然后为每个平台使用一个专门的类扩展该类。但是,在 Android 上似乎没有办法做到这一点,因为您需要一个只能从 onDrawFrame() 等函数中获取的 GL10 对象。您无法保存该 GL10 对象并在我扩展抽象 OpenGL 的 Android GL 类中使用它。如果我尝试,将不会呈现任何内容,我不知道为什么。
那么有什么解决方法吗?如果在 Android GL 类中调用 OpenGL 函数,我需要有某种方法来执行渲染器类中 onDrawFrame() 中的所有调用。
【问题讨论】:
-
您需要以一种所有实际 OpenGL 调用都在特定于平台的子类中完成的方式进行抽象。例如,创建一个抽象的
blit方法,PC 子类使用诸如glBindTexture的调用,Android 子类使用gl.glBindTexture,将GL10对象gl作为子类变量,您将其设置为每个画框()。可以毫无问题地完成,只是你会有相当多的冗余代码。
标签: opengl opengl-es cross-platform