• 对于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 来说明颜色吗?

  • 相关阅读:
    Java后台实现方法
    解决横屏下锁屏,再次解锁界面显示异常-一屏下显示反复两个界面
    java平台利用jsoup开发包,抓取优酷视频播放地址与图片地址等信息。
    用C++实现一个Log系统
    LeetCode 3_Longest Substring Without Repeating Characters
    跟着实例学习设计模式(7)-原型模式prototype(创建型)
    XStream 数组(List)输出结构
    【Cocos2d-x 3.0 基础系列一】 各类回调函数写法汇总
    机房收费系统验收小结(一)
    动态隐藏/显示系统状态栏
  • 原文地址:https://www.cnblogs.com/pengxinglove/p/1908527.html
Copyright © 2020-2023  润新知