Cocos2d-x3.2总结(六)在Cocos2d-x中开启VAO(Vertex Array Object)

    最近我都在学习OpenGL,学习过程中遇到了VBO和VAO这两个很有用的概念。VBO,全名Vertex Buffer Object。它是GPU里面的一块缓冲区,当我们需要传递数据的时候,可以先向GPU申请一块内存,然后往里面填充数据。最后,再通过调用glVertexAttribPointer把数据传递给Vertex Shader。而VAO,全名为Vertex Array Object,它的作用主要是记录当前有哪些VBO,每个VBO里面绑定的是什么数据,还有每一个vertex attribute绑定的是哪一个VBO。

    但是在Cocos2d-x3.2版本下,VAO在IOS和MAC环境下会默认打开。而在Window环境、Android环境和Blackberry环境下,VAO是默认关闭的,这是因为部分Window环境下的显卡或Android、Blackberry设备不支持。

    那么,我们当前设备环境是支持,但是Cocos2d-x引擎却默认关闭了,但是我们又很想在这些环境下使用VAO来储存我们的顶点数据,那么我们又该怎样做呢?

    经过我一个多小时的努力探索,可以做如下的修改以达到开启VAO。其实开启这个动词很简单,就是把某些代码注释就可以了,哈哈哈!

    步骤如下:

    1.打开目录..\cocos2d\cocos\base下的ccConfig.h文件。如图1。

    图1:

  

    2.打开ccConfig.h文件,搜索关键词CC_TEXTURE_ATLAS_USE_VAO,定位到代码1。

       代码1:

#ifndef CC_TEXTURE_ATLAS_USE_VAO
    #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) || (CC_TARGET_PLATFORM == CC_PLATFORM_MAC)
        #define CC_TEXTURE_ATLAS_USE_VAO 1
     #else
        /* Some Windows display adapter driver cannot support VAO. */
        /* Some android devices cannot support VAO very well, so we disable it by default for android platform. */
        /* Blackberry also doesn't support this feature. */
		 #define CC_TEXTURE_ATLAS_USE_VAO 0
     #endif
#endif
      从代码1中的,我们很明显看到上面所说的在ISO和MAC环境下开启,在其他环境下关闭的情形。到这里了,那么我们又该怎样做?从代码1中,我们看到Cocos2d-x对默认开启和默认关闭是采用了条件预处理了。那么我们以其道而行之,也就是说在条件下都开启VAO,即“#define CC_TEXTURE_ATLAS_USE_VAO 1”。那么就有了步骤3了。

     3.修改代码1,得到代码2。

        代码2:  

#ifndef CC_TEXTURE_ATLAS_USE_VAO
     #define CC_TEXTURE_ATLAS_USE_VAO 1
    //#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) || (CC_TARGET_PLATFORM == CC_PLATFORM_MAC)
    //   #define CC_TEXTURE_ATLAS_USE_VAO 1
    //#else
        /* Some Windows display adapter driver cannot support VAO. */
        /* Some android devices cannot support VAO very well, so we disable it by default for android platform. */
        /* Blackberry also doesn't support this feature. */
    //	 #define CC_TEXTURE_ATLAS_USE_VAO 0
    // #endif
#endif

         哈哈哈,开启某项功能就是注释代码。

     4.重新编译链接程序,最后看到效果图,如图2。 我在电脑和Android手机上运行都可以,如果这都不可以使用VAO,应该是你的设备不支持了。

      图2:

  


     如需转载,请标明出处:http://blog.csdn.net/cbbbc/article/details/39621827

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值