有关openGL扩展

这些函数可能是新的OpenGL函数,并没有在标准OpenGL库中实现,或者它们是用来扩展已存在的OpenGL函数的功能。和glu、glx和 wgl 一样,这些OpenGL扩展是由硬件厂商和厂商组织开发的。OpenGL扩展(OpenGL Extention)包含了大量的扩展API函 数。
         随着硬件的更新,硬件厂商首先向SGI申请登记新的扩展,编写规格说明书(specification)。然后按照说明书进行开发扩展 程序。不同的 OpenGL实现(OpenGL Implementation)支持的扩展可能不一样,只有随着某一扩展的推广与应用以及硬件技术的提高该扩 展才会在所有的OpenGL实现中被给予支持,从而最终成为OpenGL标准库的一部分。扩展由SGI维护,在SGI网站上列出了目前公开的已注册的扩展 及其官方说明书。
         扩展源由扩展函数的后缀来指明(或使用扩展常量后缀)。例如,后缀WIN表明一个符合Windows规范的扩展,EXT或ARB后缀表明该扩展由多个卖主 定义。
下面给出OpenGL官方规定的命名规则:
ARB – OpenGL Architecture Review Board 正式核 准的扩展,往往由厂商开发的扩展发展而来,如果同时存在厂商开发的扩展和ARB扩展,应该优先使用ARB扩展
EXT – 多家OpenGL厂商同意支持的扩展
HP – Hewlett-Packard 惠普
IBM – International Business Machines 
KTX – Kinetix, maker of 3D Studio Max 
INTEL – Intel 公司
NV – NVIDIA 公司
MESA – Brian Paul’s freeware portable OpenGL implementation 
SGI – Silicon Graphics公司开发的扩展
SGIX – Silicon Graphics (experimental) 公司开发的实验性 扩展
SUN – Sun Microsystems 
WIN – Microsoft 
         由于OpenGL扩展在针对不同平台和不同驱动,OpenGL不可能把所有的接口程序全部放到gl.h、glx.h、wgl.h中,而 是将这些函数头放在 了glext.h、glxext.h和wglext.h中。这些扩展被看作时OpenGL核心库规范的增加和修改。
         OpenGL扩展也不是没有缺点,正因为各个硬件厂商都可以开发自己的扩展,所以扩展的数目比较大,而且有点混乱,有些扩展实现的相同 的功能,可因为是不 同厂商开发的,接口却不一样,所以程序中为了实现这个功能,往往要为不同的显卡写不同的程序。这个问题在OpenGL 2.0出来后可能会得到 解决,OpenGL 2.0的一个目标就是统一扩展,减少扩展数目。

所有ARB扩展的函数,函数名都以ARB结尾,常量名都以_ARB结尾。例如: glGenBufferARB(函数)、GL_ARRAY_BUFFER_ARB(常量)

posted @ 2012-09-09 19:53  ActionFG  阅读(376)  评论(0)    收藏  举报