cocos2d-x之OpenGL概述
来源:互联网 发布:qq for linux 编辑:程序博客网 时间:2024/06/05 12:02
概述
cocos2d-x底层实现依赖OpenGL,这是一个图形库,可以操作显卡,因此,在处理比较复杂的游戏,消耗较大的游戏时,处理的效率会很高。而像android自带的canvas工具,就不能提供这种效率,因为它不是直接操作显卡的。当然,android自带的一些画图工具,可以做一些简单的游戏开发,如下棋,贪食蛇,连连看等。
OpenGL1.0是固定管线的,内置functions设置所有渲染状态:灯光,顶点,颜色,摄像机。
OpenGL2.0是针对可编程管线的,需要手动设置着色器(shader)。shader包括vertexShader和textureShader,可以处理顶点和纹理的数值,这样,在显卡将要显示前,就可以对对象的坐标和颜色进行修改,轻易地实现很多特效:如波纹。可以通过shader对灯光、阴影的细节进行处理,而1.0是无法对这些细节进行处理的。
cocos2d-x使用的OpenGL技术,大概就如下面所述,因为是2d图形引擎,所以,比较少用到3D的OpenGL API,因此,本文算是粗略涵盖了cocos2d-x涉及到OpenGL的内容。
cocos2d-x也使用了DirectX库,其实和OpenGL的渲染流程,原理是一样的,只是API的命名方式不同。因此,可以从OpenGL中借鉴设计原理。
使用流程
1.准备view,如android中的MySurfaceView
2.创建OpenGl context
3.创建render buffer
是OpenGL对象,用于存放渲染过的图像。屏幕区域这么大的尺寸作为约束。
4.创建frame buffer
是OpenGL对象,存放帧,它包含了render buffer . depth buffer , stencil buffer 和 accumulation buffer
深度缓冲区depth buffer:3D渲染时候,受到Z轴影响,会有遮挡现象,需要保存深度信息进行深度比较,以保证遮挡关系正确。
渲染流程
编写着色器——shader程序
这两个着色器,是在运行的时候才编译,而且是通过OpenGL库来编译的。因为OpenGL是跨平台的,进行运行时编译,比较适合,这样可以把编译出来的代码兼容到不同的平台。
OpenGL系统函数
投影矩阵
模型视图矩阵
纹理数据
OpenGL的文本显示
- cocos2d-x之OpenGL概述
- cocos2d-x之OpenGL概述
- cocos2D-X源码分析之从cocos2D-X学习OpenGL(1)----cocos2D-X渲染结构
- cocos2D-X源码分析之从cocos2D-X学习OpenGL----cocos2D-X渲染结构
- cocos2D-X源码分析之从cocos2D-X学习OpenGL(1)----cocos2D-X渲染结构
- cocos2D-X源码分析之从cocos2D-X学习OpenGL(1)----cocos2D-X渲染结构
- cocos2D-X源码分析之从cocos2D-X学习OpenGL(1)----cocos2D-X渲染结构
- Cocos2d-x opengl 画图
- Cocos2d-x OpenGL 使用
- cocos2d-x openGL坐标系
- Cocos2d-x Cocos2d-JS Cocos2d-lua概述
- 【玩转cocos2d-x之四十】如何在Cocos2d-x 3.0中使用opengl shader?
- cocos2D-X源码分析之从cocos2D-X学习OpenGL(2)----QUAD_COMMAND
- cocos2D-X源码分析之从cocos2D-X学习OpenGL(3)----BATCH_COMMAND
- cocos2D-X源码分析之从cocos2D-X学习OpenGL(2)----QUAD_COMMAND
- cocos2D-X源码分析之从cocos2D-X学习OpenGL(3)----BATCH_COMMAND
- 【玩转cocos2d-x之四十】如何在Cocos2d-x 3.0中使用opengl shader?
- cocos2D-X源码分析之从cocos2D-X学习OpenGL(4)---混合
- SetColor useage on idaPython
- C/C++除法实现方式及负数取模详解
- Silverlight事件之路由事件(一)
- 中国身份证号码验证,支持15,18位,可验证成功90%的身份证号
- MFC 打开文件对话框和保存文件对话框
- cocos2d-x之OpenGL概述
- PHPUnit&Selenium----------(一)安装
- c/c++与lua相互调用
- apache-mysql-php-postfix-dovecot-squirrelmail-smtp-virtualusers postfix-extman web安装指南
- android 9patch使用
- 深入理解PHP原理之Opcodes
- mysql 5.0 参数优化,配置utf-8编码
- 决策树学习 之 ID3算法原理
- Android音量获取——常备混淆的东西