苹果自成一套的体系可以尽情展示自家的技术水准,但是也会给一些程序开发带来挑战,比如OpenGL在Windows及Linux系统下都支持的很好,而Mac OS X系统上就不行。据报道Geeks3D的大神们本着Geek的折腾精神,OpenGL程序终于成功在OS X系统下跑起来了。
这还得感谢他买了15寸的Retnia版MacBook Pro,过去的几个月一直在研究OS X 10.8系统上的OpenGL支持问题,现在总算有点眉目了。
MacBook Pro提供了三种OpenGL渲染方法,包括两种硬件渲染,一种软件渲染。作者第一次用的将是软件渲染,而硬件渲染的基础主要是Intel HD 4000核显以及1GB显存的NVIDIA GT 650M独显。
OS X 10.8系统支持OpenGL 2.1和OpenGL 3.2 Core核心文件,但是不支持完整的OpenGL 3.2。作者在调试自己的3D库文件时发现Retina版MBP电脑上的OpenGL扩展指令与苹果OpenGL兼容列表上列出的都是一样的。
OSX 10.8 OpenGL Core Caps (GL 3.2)
OSX 10.8 OpenGL Lagacy Caps (GL 2.1)
OSX 10.7 OpenGL Core Caps (GL 3.2)
OSX 10.7 OpenGL Legacy Caps (GL 2.1)
OSX 10.6 OpenGL Caps (GL 1.4, GL 2.1)
至于OpenGL 3.2核心文件,软件渲染器支持15条扩展指令,HD 4000核显支持13条而GT 650M支持16条。如果你想在OS X 10.6系统下支持OpenGL 3.2则是不可能的,只能在10.7(Lion)以及10.8(Moutain Lion)系统上才可以。
在Windows系统上用于连接OpenGL与应用的API被称为WGL,Linux系统上叫做XGL,而在OS X系统上有四个API,分别是CGL、AGL、NSOpenGL以及GLX,其中CGL是API的基础,其他API都要依赖这个API。
上面牵扯的理论知识太多了,来看看作者的一个实际成果吧——GLSL Hacker,这Geexlab工具跨平台支持的OS X版本。
还有一个API是NSOpenGL,来源于Cocoa框架,后者是一个OS X系统下64位的窗口系统。
截图显示的是GT 650M显卡的GPUTest拷机测试,GPUTest测试广泛应用在了Furmark、Tessmark这样的测试软件中,现在则用在OS X平台上。
作者表示,在第一次接触OS X平台上OpenGL的表现还是很积极的,由于吸收了Objective-C语言的优点,它很容易就能在Cocoa窗口中进行OpenGL编程。作者在OSX 10.7及10.8系统的HD 4000、GT 650M、GeForce 320M、HD 4870、HD 6750M显卡上都做了体验,它的GLSL Shader都可以立即工作。
不太方便的则是glext.h文件,他的代码依赖于从OpenGL.org上下载的官方glext.h文件,但是使用苹果的glext.h文件就不能编译通过。
最后,作者期望看到在OS X上使用曲面细分功能,这需要OpenGL 4.0,还需要苹果的进一步支持。