cocos Uniforms值的赋值
- cocos Uniforms值的赋值
- 举个void Renderer::drawBatchedTriangles()的渲染:
- //Start drawing verties in batch
- for(const auto& cmd : _batchedCommands)
- {
- auto newMaterialID = cmd->getMaterialID();
- if(_lastMaterialID != newMaterialID || newMaterialID == MATERIAL_ID_DO_NOT_BATCH)
- {
- //Draw quads
- if(indexToDraw > )
- {
- //使用前面绑定的定点数据,绘制图元
- glDrawElements(GL_TRIANGLES, (GLsizei) indexToDraw, GL_UNSIGNED_SHORT, (GLvoid*) (startIndex*sizeof(_indices[])) );
- _drawnBatches++;
- _drawnVertices += indexToDraw;
- startIndex += indexToDraw;
- indexToDraw = ;
- }
- //Use new material
- //这个函数内部就是对Uniforms赋值
- cmd->useMaterial();
- _lastMaterialID = newMaterialID;
- }
- indexToDraw += cmd->getIndexCount();
- }
- 、
- void TrianglesCommand::useMaterial() const
- {
- //Set texture
- //设置纹理
- GL::bindTexture2D(_textureID);
- //set blend mode
- GL::blendFunc(_blendType.src, _blendType.dst);
- _glProgramState->apply(_mv);
- }
- 、
- void GLProgramState::apply(const Mat4& modelView)
- {
- //设置cocos内置的Uniforms值
- applyGLProgram(modelView);
- //一般用不到
- applyAttributes();
- //设置用户自定义的Uniforms值,当然也可以通过其他方式直接设置
- applyUniforms();
- }
- 、
- 这个函数就是真正的设置Uniform的值
- void GLProgram::setUniformsForBuiltins(const Mat4 &matrixMV)
- {
- auto& matrixP = _director->getMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_PROJECTION);
- if (_flags.usesP)
- setUniformLocationWithMatrix4fv(_builtInUniforms[UNIFORM_P_MATRIX], matrixP.m, );
- if (_flags.usesMV)
- setUniformLocationWithMatrix4fv(_builtInUniforms[UNIFORM_MV_MATRIX], matrixMV.m, );
- if (_flags.usesMVP) {
- Mat4 matrixMVP = matrixP * matrixMV;
- setUniformLocationWithMatrix4fv(_builtInUniforms[UNIFORM_MVP_MATRIX], matrixMVP.m, );
- }
- if (_flags.usesNormal)
- {
- Mat4 mvInverse = matrixMV;
- mvInverse.m[] = mvInverse.m[] = mvInverse.m[] = 0.0f;
- mvInverse.inverse();
- mvInverse.transpose();
- GLfloat normalMat[];
- normalMat[] = mvInverse.m[];normalMat[] = mvInverse.m[];normalMat[] = mvInverse.m[];
- normalMat[] = mvInverse.m[];normalMat[] = mvInverse.m[];normalMat[] = mvInverse.m[];
- normalMat[] = mvInverse.m[];normalMat[] = mvInverse.m[];normalMat[] = mvInverse.m[];
- setUniformLocationWithMatrix3fv(_builtInUniforms[UNIFORM_NORMAL_MATRIX], normalMat, );
- }
- if (_flags.usesTime) {
- // This doesn't give the most accurate global time value.
- // Cocos2D doesn't store a high precision time value, so this will have to do.
- // Getting Mach time per frame per shader using time could be extremely expensive.
- float time = _director->getTotalFrames() * _director->getAnimationInterval();
- setUniformLocationWith4f(_builtInUniforms[GLProgram::UNIFORM_TIME], time/10.0, time, time*, time*);
- setUniformLocationWith4f(_builtInUniforms[GLProgram::UNIFORM_SIN_TIME], time/8.0, time/4.0, time/2.0, sinf(time));
- setUniformLocationWith4f(_builtInUniforms[GLProgram::UNIFORM_COS_TIME], time/8.0, time/4.0, time/2.0, cosf(time));
- }
- if (_flags.usesRandom)
- setUniformLocationWith4f(_builtInUniforms[GLProgram::UNIFORM_RANDOM01], CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1());
- }
cocos Uniforms值的赋值的更多相关文章
- jquery select取值,赋值操作
select">jquery select取值,赋值操作 一.获取Select 获取select 选中的 text : $("#ddlRegType").find( ...
- Salesforce中所有常用类型字段的取值与赋值
Salesforce中所有常用字段类型的定义以及如何用代码进行取值和赋值: Field Type的定义: http://www.salesforce.com/us/developer/docs/api ...
- jQuery对表单元素的取值和赋值操作代码
使用常规的思路:$(“#keyword”).value 取值是取不到的,因为此时$(‘#keydord’)已经不是个element,而是个jquery对象,所以应该使用:$(“#keyword”).v ...
- [前端 2]常用的JQuery和Dom页面取值与赋值
导读:书到用时方恨少,需要基础知识的时候,才悔恨自己没有总结学习好.前段时间调了好长时间的页面,突然发现自己之前不怎么在意的取值和赋值,真的是自己一个很薄弱的地方,有时候查半天都找不到一个对的,现在用 ...
- 浅谈jquery关于select框的取值和赋值
浅谈jquery关于select框的取值和赋值 jQuery("#select_id").change(function(){}); // 1.为Select添加事件,当选择其 ...
- Python:高级主题之(属性取值和赋值过程、属性描述符、装饰器)
Python:高级主题之(属性取值和赋值过程.属性描述符.装饰器) 背景 学习了Javascript才知道原来属性的取值和赋值操作访问的“位置”可能不同.还有词法作用域这个东西,这也是我学习任何一门语 ...
- jQuery对表单元素的取值和赋值操作代码(转)
使用常规的思路:$("#keyword").value 取值是取不到的,因为此时$('#keydord')已经不是个element,而是个jquery对象,所以应该使用:$(&qu ...
- Jquery给网页的title取值和赋值
//获取title的值 var title_val=$('#id').attr('title'); alert(title_val); //修改title的值.赋值给title $('#id2').a ...
- html常用标签的取值和赋值操作
我们在html页面当中,面对各种各样的标签,经常需要处理取值和赋值的问题,下面,就把常见的一些html标签元素的取值和赋值操作进行总结整理,以后备用. 1.button:改变button按钮上面的值, ...
随机推荐
- 题解 POJ 2559【Largest Rectangle in a Histogram】(单调栈)
题目链接:http://poj.org/problem?id=2559 思路:单调栈 什么是单调栈? 单调栈,顾名思义,就是单调的栈,也就是占中存的东西永远是单调(也就是递增或递减)的 如何实现一个单 ...
- QT之Qt之Q_PROPERTY宏理解
在初学Qt的过程中,时不时地要通过F2快捷键来查看QT类的定义,发现类定义中有许多Q_PROPERTY的东西,比如最常用的QWidget的类定义: Qt中的Q_PROPERTY宏在Qt中是很常用的,那 ...
- 生意bisynes单词bisynes商业
英语bisynes商务概念的提出是改革的产物,有一个演变的过程:贸易部--商业部.外贸部--内贸部--内贸局--商务部.是内外贸一体化的概念. 中文名:商务 外文名:Business,Bisynes商 ...
- Redis特点分析及性能优化
一.Key >Redis key值是二进制安全的,这意味着可以可以使用任何二进制序列作为key值.空字符串也是有效的key值. >key取值原则 1.键值不需要太长,消耗内存,且在数据中查 ...
- 排序算法的c++实现——冒泡排序
冒泡排序 冒泡排序是我们大多数人接触到的第一种排序算法,原理简单易懂,不多解释.说明三点: 1. 冒泡排序是稳定排序,只有当两个元素不同时才会交换: 2. 冒泡排序是原址排序,不需要借助额外的空间; ...
- Pandas 之 Series / DataFrame 初识
import numpy as np import pandas as pd Pandas will be a major tool of interest throughout(贯穿) much o ...
- Win10 Microsoft Store 微软商店 Error 0x00000193 解决方法
0x00 前言 最近使用 CFW 过程中使用 Fiddle Web Debug 设置 Store 的回环代理的过程中发现无论是否使用代理,Store 都无法访问网络的问题,在最下面的提示中出现了 0x ...
- RHEL6+GFS2+MYSQL高可用
RHCS集群安装部署 组件介绍: luci: luci是一个基于web的,用来管理和配置RHCS集群,通过luci可以轻松的搭建一个功能强大的集群系统,节点主机可以使用ricci来和luci 管理段进 ...
- CentOS6.7安装部署Nginx(详解主配置文件)
keepalived + nginx :实现高可用 nginx: web服务器 反向代理,也支持缓存(缓存在磁盘上) 支持FastCGI tengine:淘宝官方在nginx原有的代码的基础上对n ...
- 洛谷P5092 [USACO2004OPEN]Cube Stacking 方块游戏 (带权并查集)
题目描述 约翰和贝茜在玩一个方块游戏.编号为 1\ldots n 1-n 的 n n ( 1 \leq n \leq 30000 1≤n≤30000 )个方块正放在地上,每个构成一个立方柱. 游戏开始 ...