wince +sl 群

对于OPENGL ES SURFACE的学习

时间:8:24 2010-12-16

 

昨天那个OPENGL ES 3D GAME 引擎,其在 OPENGL ES 的四大业务模块当中,其是辅助初始化模块与显示模块。

现在在主要问题,其是熟悉原始的OPENGL ES的原始写法。

Opengl es 其其的背景知识
    在这里我们只是说明:初始化模块当中的OPENGLES其是怎么样与本地窗口建立联系。

OpenGL标准是不依赖于窗口系统的,这提供了很强的平台无关性,但也使得我们在Windows下要用wgl初始化,而X-Window下就得学会用

xgl,Mac OS X上则是agl。而手持及嵌入式市场的平台种类不计其数,单是学习各家手机操作系统的接口就是很大的负担了,更不用说总有

一些有志于支持各种尺寸平台的软件开发者,所以OpenGL ES提供了Window Surface的抽象,使得移植工作可以基本局限在重新实现一下建

立窗口的过程。

[问题]

手机 3D 时代的来临
3D 在 PC 上面不算什么,现在的游戏基本上都是 3D 的。而在手机上,由于处理器的能力和 PC 还有很大的差距,在手机上面实现真 3D 还

是有挑战的。并且 3D 也是今后手机的趋势之一,无论高端,中端、低端。3D 的门槛比较高,不仅仅是调用 OpenGL/OpenGL ES 来绘制

3D 的对象,而是要设计一个完整的能在手机上跑的 3D architecture。本文介绍了市面上的几款带 3D 效果的手机。

[ Config 与Framebuffer 的理解]
    framebuffer 其是存放像素的数据结构,但其中的每一个像素的格式是不同的。其主要表现在使用多少位来表示一个像素。如1,

4,8,16(555,565,1555),24(。。。),32(。。。),48.。。

由于之前在OPENGL 当中没有深入地了解 OPENGL与WINDOWS 本地窗口关联的情况,之前使用GLUT库,现在应该来了解下。

//下面的代码设置多重采样的像素格式
int iAttributes[] =
{
WGL_DRAW_TO_WINDOW_ARB,GL_TRUE,
WGL_SUPPORT_OPENGL_ARB,GL_TRUE,
WGL_ACCELERATION_ARB,WGL_FULL_ACCELERATION_ARB,
WGL_COLOR_BITS_ARB,24,
WGL_ALPHA_BITS_ARB,8,
WGL_DEPTH_BITS_ARB,16,
WGL_STENCIL_BITS_ARB,0,
WGL_DOUBLE_BUFFER_ARB,GL_TRUE,
WGL_SAMPLE_BUFFERS_ARB,GL_TRUE,
WGL_SAMPLES_ARB,4,
0,0
};

// 首先我们测试是否支持4个采样点的多重采样
valid = wglChoosePixelFormatARB(hDC,iAttributes,fAttributes,1,&pixelFormat,&numFormats);
// 如果返回true并且numformats大于1,则表示成功,那么起用多重采样
if (valid && numFormats >= 1)
{
arbMultisampleSupported = true;
arbMultisampleFormat = pixelFormat;
return arbMultisampleSupported;
}

// 接着我们测试是否支持2个采样点的多重采样
iAttributes[19] = 2;
// 如果返回true并且numformats大于1,则表示成功,那么起用多重采样
valid = wglChoosePixelFormatARB(hDC,iAttributes,fAttributes,1,&pixelFormat,&numFormats);
if (valid && numFormats >= 1)
{
arbMultisampleSupported = true;
arbMultisampleFormat = pixelFormat;
return arbMultisampleSupported;
}

// 返回支持多重采样
return arbMultisampleSupported;

==>
int iAttributes[] ={ ID ,VALUE};
wglChoosePixelFormatARB(hDC,iAttributes,fAttributes,1,&pixelFormat,&numFormats);

这与OPENGL ES当中选择Config有点类似。

Framebuffer其是有多个属性,每一个属性也有不同的值。
WGL_COLOR_BITS_ARB,24,
WGL_COLOR_BITS_ARB 其还可以是32,48,64等位数。

[ 问题]
    eglwrapper 其的功能:
1. 其完成的了初始化模块当中的:

本地窗口初始经:其没有完成,
OPENGL 初始化:其完成了

GAME 业务逻辑 没有完成。

用户自己在新建WIN32程序的时候,其只有建立窗口,然后在初始化时候,添加此初始代码就可以。再添加GAME业务逻辑的初始化。

[ Opengl es 系列之基本-3:Hello,EGL]
本主着重关注:OPENGL ES的模型描述。
    在OPENGL ES当中建立一个[三维]对象 其还是使用顶点来说明。
但在编程的时候,其却是有所不同。

在OPENGL ES当中其是使用了
其的业务流程是:
在 glBegin / glEnd之间使用 glVertex 之来逐点描述模型。

在OPENGL ES当中 其统一使用
VertexArray 来说明顶点 
ColorArray 来说明颜色吗?

posted @ 2010-12-16 18:29  pengxinglove  阅读(1814)  评论(0编辑  收藏  举报
wince +sl 群