【Cocos2d-x 3.2】在Cocos2d-x中开启VAO(为Vertex Array Object)
来源:互联网 发布:js删除数组最后一个 编辑:程序博客网 时间:2024/05/22 06:42
2014-09-29 09:38:2745 次阅读
最近我都在学习OpenGL,学习过程中遇到了VBO和VAO这两个很有用的概念。VBO,全名VertexBufferObject。它是GPU里面的一块缓冲区,当我们需要传递数据的时候,可以先向GPU申请一块内存,然后往里面填充数据。最后,再通过调用glVertexAttribPointer把数据传递给VertexShader。而VAO,全名为VertexArrayObject,它的作用主要是记录当前有哪些VBO,每个VBO里面绑定的是什么数据,还有每一个vertexattribute绑定的是哪一个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:
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,即“#defineCC_TEXTURE_ATLAS_USE_VAO1”。那么就有了步骤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
- 【Cocos2d-x 3.2】在Cocos2d-x中开启VAO(为Vertex Array Object)
- Cocos2d-x3.2总结(六)在Cocos2d-x中开启VAO(Vertex Array Object)
- OpenGL.Vertex Array Object (VAO).
- 关于OpenGL中VAO(Vertex Array Object)的理解
- cocos2d-x开启Wifi
- cocos2d-x 开启控制台
- 顶点数组对象 VAO(Vertex Array Object)
- cocos2d-x中,怎么开启debugDraw?
- cocos2d-x 开启多触点
- cocos2d-x开启之路
- cocos2d-x 3.x 开启debugdraw
- 【cocos2d-x】cocos2d-x中设置颜色
- cocos2d-x 中 getContentSize
- 怎样在 UIKit 中使用 Cocos2d-x
- cocos2d-x在android中按键触发
- 在cocos2d-x中调试lua
- 在cocos2d-x中使用luajit
- 在cocos2d-x中使用LUA
- madplay移植过程 - 音频mp3解码器
- GDB 调试正在运行的程序
- 【.Net码农】C#打开文件对话框(OpenFileDialog)
- Linux的watch命令 — 实时监测命令的运行结果
- 【让你的C++程序更加高效】条款03:尽量使用new/delete而不是malloc/free
- 【Cocos2d-x 3.2】在Cocos2d-x中开启VAO(为Vertex Array Object)
- 简单形象理解网络传输过程--读书笔记
- UI设计---化繁为简
- 职场分享:如何让我们的工作更加有激情
- Content-Disposition的使用方法
- 网络爬虫爬取策略,注意爬虫爬取网站的频率
- 【.Net码农】File Class
- 程序员生存定律--升华成高手的可能方法
- 互斥对象、事件对象、与关键代码段的比较