2011-11-20 50 views
2

我正在寻找打开OpenGL上下文并在Windows,MacOS,Linux发行版中使用X,android和iOS绘制原生OpenGL的能力。我不想依赖实际的“本机”设备框架UI,我不需要使用本地组件,我只需要一个OpenGL上下文来本地绘制OpenGL。许多像Marmalade和MoSync这样的跨平台软件开发工具包都将重点放在使用本地UI组件和类似的东西上,我所需要的只是一个OpenGl上下文,因为我打算这样做,绝对不需要本地UI功能,但是,访问如果可能的话,还需要像麦克风,摄像头和其他传感器等本机硬件功能,以及访问音频/视频/网络。跨平台硬件本地OpenGL库,可能与多媒体?

我不想使用QT,我想要做一些更接近硬件的工作,以在低水平上工作。总体思路是制作一个轻量级的跨平台硬件加速图形用户界面(GUI),它的编写水平足够低,足以成为真正的硬件本地,而不依赖任何本地软件框架。我知道对于android来说,我可能不得不使用java包装器来启动本地代码,但是想法是将这个包装器最小化,只需很少的修改就可以部署低级别,因此希望真正实现跨平台代码,这只是依赖于OpenGL硬件和OpenGL上下文才能正常工作。因此,我需要一个最低限度的解决方案,尽量避免使用非跨平台功能。

当时唯一出现在我脑海的图书馆是SDL,但我不确定它是否支持android和iOS属性,所以除了图书馆推荐之外,还有更多关于SDL如何处理android和iOS设备及其硬件的信息。太。

+1

我不了解你,但在我的书“便携”和“本地”是oxymorons ... – Mehrdad

+0

那么,你可能会错过添加“硬件”和“软件”类型的工作人员本身的含义的细微差别 - 我问的是本机硬件OpenGL访问是跨平台的,所以我不必使用本机软件框架,它不是交叉平台。 原生硬件API等于跨平台,或者至少这是我希望它。 – dtech

回答

4

如何:

  • GLFW
  • SDL
  • 转运蛋白(FreeGLUT或OpenGLUT)
  • Blender的GHOST框架?

从本质上讲,他们打开一个窗口,在其上创建一个OpenGL上下文,为您提供输入事件并让其余部分交给您。

3

你想要的只不过是一个特定于平台的OpenGL上下文设置(这非常简单并且有很好的文档记载:NeHe OpenGL教程提供了很多环境的代码,它只是做这个here(解释是Windows特定的,向下滚动在不同操作系统的代码)。

一旦你的OpenGL上下文,没有什么可以阻止您创建一个完整的GUI与所有的OpenGL元素。

如果你愿意,你可以使用Qt只设置一个OpenGL上下文(即不要使用任何QWidgets或任何东西,除了向您展示OpenGL场景的窗口外),它会照顾整个设置过程,但仅限于此,Qt成为巨大的依赖关系,因为它只能真正替代每个平台最多100行代码。

关于SDL + Android,你检查了README

而对于iOS,检查相同的文件here