我正在编写一个OpenGL游戏,希望对于Linux和iPhoneOS都有帮助,我基本上希望能够使用OpenGL ES 1.5头文件构build并在我的Linux桌面上运行它。 我可以这样做吗? IE,我只想使用OpenGL和OpenGL-ES之间通用的API调用子集。
做上面的,并从我的系统链接正常的libGL.a让我的屏幕,但我似乎无能为力,但改变场景的背景颜色。
我已经完成了这个工作,对我来说工作得很好。
有许多OpenGL | ES扩展在标准OpenGL上不可用,但在低规格平台上却非常好。 glDrawTexImage就是这样一个扩展。 使用桌面OpenGL调用手来模拟这些扩展并不是什么大不了的事情。
另外OpenGL | ES支持大多数入口点的定点数据格式。 以glClearColorx为例。 这些不可用于桌面OpenGL,所以如果你想使用它们,你必须编写一个包装器。 如果您还以这种格式存储顶点数据,那么要做更多的工作。
哦 – 请注意,OpenGL | ES不附带glu库。 你可以在桌面上使用它,但是如果你这样做,你将不得不在稍后重新实现它们(参见关于gluLookAt和gluUnproject的100个问题)。
OpenGL ES 1.5没有这样的东西。 你的意思是1.1吗?
另外,你怎么得到一个窗口? 这是平台特定的。
在任何情况下,您仍然应该根据您将链接的lib的头文件进行编译。 你不知道头文件设置了什么(例如,在窗口上,你不关心,但仍然是在那里指定调用约定)。
还有一些调用不能在2之间映射好。例如,在GL中只使用双精度的API在GLES中是浮点的(来自ES规范):
只有双精度命令DepthRange,Frustum和Ortho被替换为单精度或定点变量
总而言之,除了使用相同的代码之外,还有更多的工作要做,尽管如果你坚持使用GL ES子集,那么所讨论的工作仍然很少。