Difference between revisions of "Glloader"

From KlayGE
Jump to: navigation, search
m (Ru link)
m
Line 1: Line 1:
glloader是[[KlayGE|KlayGE游戏引擎]]的一个子项目,从2004年开始开发(详见[[glloader的发展历程]])。它本质上是OpenGL扩展载入库,可以载入OpenGL 1.0-4.1,OpenGL ES 1.0-2.0,以及WGL、GLX等OpenGL扩展,只要编写xml脚本就能自动生成扩展载入代码。
+
glloader是[[KlayGE|KlayGE游戏引擎]]的一个子项目,从2004年开始开发(详见[[glloader的发展历程]])。它本质上是OpenGL扩展载入库,可以载入OpenGL 1.0-4.2,OpenGL ES 1.0-2.0,以及WGL、GLX等OpenGL扩展,只要编写xml脚本就能自动生成扩展载入代码。
  
 
glloader独有的一个功能是,对每一个扩展,glloader都提供了一条初始化路径。如果一个扩展已经提升到核心中,那么在初始化这个扩展的时候,会先尝试从核心的版本中载入,失败的话才载入扩展的版本。
 
glloader独有的一个功能是,对每一个扩展,glloader都提供了一条初始化路径。如果一个扩展已经提升到核心中,那么在初始化这个扩展的时候,会先尝试从核心的版本中载入,失败的话才载入扩展的版本。

Revision as of 21:18, 20 August 2011

glloader是KlayGE游戏引擎的一个子项目,从2004年开始开发(详见glloader的发展历程)。它本质上是OpenGL扩展载入库,可以载入OpenGL 1.0-4.2,OpenGL ES 1.0-2.0,以及WGL、GLX等OpenGL扩展,只要编写xml脚本就能自动生成扩展载入代码。

glloader独有的一个功能是,对每一个扩展,glloader都提供了一条初始化路径。如果一个扩展已经提升到核心中,那么在初始化这个扩展的时候,会先尝试从核心的版本中载入,失败的话才载入扩展的版本。

设置完include和lib目录之后,你需要做的唯一事情就是把#include <glloader/glloader.h>添加到你的代码中。

注意

不要把GLLoader放在包含非英文名的目录中,否则autogen.py有可能无法正常执行。

接口

int glloader_is_supported(const char* name);

检测一个扩展是否支持。参数name为扩展的名字字符串。如果支持返回非0,否则返回0。

注意:可以使用GL_VERSION_x_y来检测是否支持x.y版本OpenGL核心。


void* glloader_get_gl_proc_address(const char* name);

载入一个OpenGL函数。参数name为要载入的函数名称。返回函数地址。

注意:如果试图载入一个不存在的函数,并不一定会返回NULL。


int glloader_num_features();

返回支持的扩展数量。


const char* glloader_get_feature_name(int index);

获取扩展的名字。index参数的取值范围是[0, glloader_num_features() - 1]。

代码自动生成

由于载入代码具有极大的重复性,所以glloader采用了代码自动生成技术。在xml目录下的xml脚本包含一个扩展定义的typedef、常量、函数和初始化路径。用户可以根据格式写出自己需要支持的扩展脚本,然后运行autogen.py,就会在src和include目录下生成相应的载入代码。

依赖

需要Python 2.6以上来运行autogen.py。