cocos2dx下的OpenGL学习总结 docx - 图文

2019-03-03 10:31

Objective:

1、了解cocos2dx渲染流程,学习如何在cocos2dx引擎下编写OpenGL代码

2、了解OpenGL的渲染管线,学习Vertex shader和Fragment shader的编写,学习shader与c++程序如何传做数据传递

作者:织法

在手游如雨后春笋般上线的今天,手游的同质化极其严重。不同游戏间差别可能只是一层皮,在这种情况下,一款游戏若想获得成功,就必须有所突破,图形就是一个很好的突破口。

在中国,Cocos2dx是当下最流行的2D手游开发引擎,其最大的优点之一就是开源。正因为这一特点,我们可以轻松的添加一些自己想要的效果,尤其在图形方面。

下面,我将讲解如何在cocos2dx下使用OpenGL。

目录

一. Cocos2dx的渲染流程 ..................................................... 3

1.1 Node的Visite函数 .................................................................................... 3 1.2 Sprite的draw函数 ........................................................................................ 5 1.3 render对象浅析 .............................................................................................. 5 1.4 AutoBatch原理讲解 ...................................................................................... 9 1.5 自定义RenderCommand.......................................................................... 12

二. OpenGL简介 .................................................................. 13

2.1 OpenGL 渲染管线 ........................................................................................ 13

2.1.1 Vertex Shading ......................................................................... 14 2.1.2 Primitive Assembly ................................................................. 14 2.1.3 Clipping ...................................................................................... 15 2.1.4 Rasterization ............................................................................. 15 2.1.5 fragment shading ................................................................... 16 2.1.6 Pre-Fragment Operations .................................................... 16

2.2 一个简单的着色器程序 ................................................................................ 17 2.3 VAO与VBO ................................................................................................... 20 2.4 彩色的三角形 ................................................................................................. 22 2.5 shader语法简介 ............................................................................................ 24

2.5.1 变量的声明 ................................................................................. 24

2.5.2 变量的转换 ................................................................................. 25 2.5.3 Vector Component Accessors ............................................ 26 2.5.4 shader的结构 ............................................................................ 26 2.5.5shader中的内置变量与内置函数 ............................................ 27 2.5.6 cocos2dx提供的内置变量 ...................................................... 27

三 3D图元的绘制 .................................................................... 29

3.1 MVP 3D 矩阵变幻 ........................................................................................ 29

3.1.1 投影矩阵 ..................................................................................... 30

一. Cocos2dx的渲染流程

要想了解如何在cocos2dx引擎下编写OpenGL代码,首先要知道这些代码应当写在哪里。而cocos2dx这个引擎的渲染模块,正是基于OpenGL的API来编写,我们可以研究一下他的渲染流程。

1.1 Node的Visite函数

打开cocos2dx引擎中的CCNode.cpp文件,翻到Visit处,可看到以下代码,如图1.1所示。

图1.1 Visit

Node的Visite先从导演类中取得渲染器Render对象,在从矩阵栈中获取当前的modelView矩阵。再把他们传入带3个参数的Visit中。下面我们看看这个函数都做了些什么,如图1.2,1.3所示

图1.2 visit1

图1.3 visit2

我们可以看到,当visible为false时,函数直接被return掉。之后先向栈中推入一个矩阵,在把当前的modelView矩阵放入栈中。而后就是我们熟悉的遍历过程。先遍历Z-order小于0的,绘制,而后是大于0的。这也就揭示了

zorder是如何控制渲染层级的,也揭示节点树的绘制顺序。

1.2 Sprite的draw函数

下面,我们看一下精灵类draw到底做了些什么。打开引擎的CCSprite.cpp文件,翻到draw处,其代码如图1.4所示。

图1.4 Sprite::draw

我们可以看到,传说中的渲染剔除,就是在这里做的。而且就是一个AABB的判断。这函数的主要功能,就是把相关信息放入一个command中,传到了render对象中。

1.3 render对象浅析

下面,我们将详细分析下这个render对象。

首先,我们找6张可爱的水果图片,在helloworld中重复添加这些图片,运行效果如图1.5所示。


cocos2dx下的OpenGL学习总结 docx - 图文.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:XX镇旧村改造扩建(新农村建设)工程项目建议书 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: