77范文网 - 专业文章范例文档资料分享平台

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

来源:网络收集 时间:2019-03-03 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

float(a);vec4(a_vec2.xy,0.0,1.0);

2.5.3 Vector Component Accessors

vec4(a_vec2.xy,0.0,1.0)?xy是什么?这是为了方便书写,GLSL对vec中的变量提供了访问别名,如下图所示。

图2.16 vector的别名

2.5.4 shader的结构

我们知道,我们常用的shader有两个,一个是顶点着色器,一个是片元着色器。在顶点着色器中,传入的变量用attribute修饰,通常放在程序顶部。需要在顶点着色器与片元着色器间传递的变量,用varying修饰,通常这种变量在顶点着色器中赋值,在片元着色器中读取(读取到的内容是经过插值的)。Uniform型变量同时可以在顶点着色器和片元着色器中被访问,但不能被修改。

每一个shader程序,虽然有着main函数,但实质上却是一个有着输入输出的函数。正如咱前面ColoredTriangle的代码,顶点着色器中position,color是输入,gl_Position,v_color是输出;片元着色器中,v_color是输入,gl_fragColor是输出,通常片元着色器中有且仅有这一个输出。

2.5.5shader中的内置变量与内置函数

细心的同学可能要问,gl_Position, gl_fragColor是什么,好像程序中完全没有定义过啊。其实,这些是GLSL的内置变量,如图2.17,1.18所示。

图2.17顶点着色器的内置变量

图2.18片元着色器的内置变量

这些内置变量的详细解释,请在红宝书第8版的附录C中查询。除了内置变量,还有一些内置函数,内置常数,在这也就不一一列举,有兴趣的同学可以翻阅红宝书进行深入学习。

2.5.6 cocos2dx提供的内置变量

除了上面提到的GLSL内置变量,我们还可以在官方demo中看到一些CC打头的变量,那是Cocos2dx在编译shader时加进去的。

打开引擎cocos/render下的CCGLProgram.h文件,我们可以看到这些静态变量,如图2.19所示。

图2.19 cocos2dx的shader内置变量1

转到CPP文件,我们可以看到如下定义。如图2.20所示。在updateUniforms函数中,把这些变量定义到shader中,新版本的createWithByteArrays

函数中会被自动调用。在每帧调用

setUniformsForBuiltins函数可以更新诸如MV矩阵时间控制等变量。

图2.20 cocos2dx的shader内置变量2

三 3D图元的绘制

通过前面的学习,大家是否已经对cocos2dx下的openGL编程有了初步的了解呢。下面,我们来进入正题,绘制3D图元。

3.1 MVP 3D 矩阵变幻

在学习3D的时候,我们常常会听到MVP的概念。下面我分析下这些矩阵的意义。

我们知道,电脑的屏幕都是二维的,显卡的光栅化,也都是处理的二维图元。那么,我们如何把3D的坐标,变化为屏幕的二维坐标呢。

3.1.1 投影矩阵

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库cocos2dx下的OpenGL学习总结 docx - 图文(6)在线全文阅读。

cocos2dx下的OpenGL学习总结 docx - 图文(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/487937.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: