文档库

最新最全的文档下载
当前位置:文档库 > 一步一步教你用OpenGL_ES编程

一步一步教你用OpenGL_ES编程

一步一步教你用OpenGL ES编程

(Step-by-step programming in OpenGL SE)

OpenGL ES是针对手机、PDA和游戏主机等嵌入式设备制定的编程接口,是由OpenGL的不同版本演化而来,目前已有OpenGL ES1.x和OpenGL ES2.0,OpenGL ES2.0添加了对可编程管线的支持.OpenGL ES1.X又有OpenGL ES1.0和OpenGL ES1.1,前者支持定点实数(fixed)和浮点数(float),后者只支持定点数(fixed)

库来自Vicent Mobile 3D Rendering Library 的ogles-bin-1.0.0, 解压后拷贝include文件夹到Mobile的SDK下的Include文件夹下,拷贝bin文件夹下的debug和release到工程文件下的debug和release下新建智能项目工程HelloOpenGL_Quad

如下配置工程的DLL和LIB

这里对opengles库使用的是静态引用,因此要在工程中设好对.lib的引用路径和附加库设置: 初始化设备,OpenGL是具备平台无关性的,所谓的平台无关,只是为OpenGL提供了不同平台的不同接口,使其建立起opengl的显示环境. 这里用到的是EGL规范.那么先建立一个初始化设备函数BOOL InitOGLDevice(HWND hwnd),参数是当前窗口句柄.

获取显示输出设备接口,EGL就是我们进行设备初始化工作的关键API,因此这里用到的函数都是eglXXXXXX,获取显示接口函数包括eglGetDisplay(NativeDisplayType native_display)和eglGetCurrentDisplay(),前面一个是建立一个显示接口,后者是从当前的opengl环境返回一个opengl接口

g_eglDisplay = eglGetDisplay( GetDC( hwnd ) );

初始化显示设备,这是一个内部初始化的过程,可能为显示结构内部变量给初值

eglInitialize( g_eglDisplay, &major, &minor )

frame buffer属性定义,再使用eglChooseConfig找到最匹配这项属性列表的配置定义,并返回配置项,返回的配置被使用来建立表面和状态机,

EGLint attrib_list[] =

{

EGL_DEPTH_SIZE, 16,

EGL_RED_SIZE, 5,

EGL_GREEN_SIZE, 6,

EGL_BLUE_SIZE, 5,

EGL_NONE

};

eglChooseConfig(g_eglDisplay, attrib_list, configs_list, num_config, &num_config)

根据配置描述一个设备表面

eglCreateWindowSurface( g_eglDisplay, configs_list[0], hwnd, NULL );

返回一个相关属性设置的状态机

eglCreateContext( g_eglDisplay, configs_list[0], EGL_NO_CONTEXT , attrib_list );

1