1. cocos Uniforms值的赋值
  2. 举个void Renderer::drawBatchedTriangles()的渲染:
  3. //Start drawing verties in batch
  4. for(const auto& cmd : _batchedCommands)
  5. {
  6. auto newMaterialID = cmd->getMaterialID();
  7. if(_lastMaterialID != newMaterialID || newMaterialID == MATERIAL_ID_DO_NOT_BATCH)
  8. {
  9. //Draw quads
  10. if(indexToDraw > )
  11. {
  12. //使用前面绑定的定点数据,绘制图元
  13. glDrawElements(GL_TRIANGLES, (GLsizei) indexToDraw, GL_UNSIGNED_SHORT, (GLvoid*) (startIndex*sizeof(_indices[])) );
  14. _drawnBatches++;
  15. _drawnVertices += indexToDraw;
  16.  
  17. startIndex += indexToDraw;
  18. indexToDraw = ;
  19. }
  20.  
  21. //Use new material
  22. //这个函数内部就是对Uniforms赋值
  23. cmd->useMaterial();
  24. _lastMaterialID = newMaterialID;
  25. }
  26.  
  27. indexToDraw += cmd->getIndexCount();
  28. }
  29.  

  30. void TrianglesCommand::useMaterial() const
  31. {
  32. //Set texture
  33. //设置纹理
  34. GL::bindTexture2D(_textureID);
  35.  
  36. //set blend mode
  37. GL::blendFunc(_blendType.src, _blendType.dst);
  38.  
  39. _glProgramState->apply(_mv);
  40. }
  41.  

  42. void GLProgramState::apply(const Mat4& modelView)
  43. {
  44. //设置cocos内置的Uniforms值
  45. applyGLProgram(modelView);
  46.  
  47. //一般用不到
  48. applyAttributes();
  49.  
  50. //设置用户自定义的Uniforms值,当然也可以通过其他方式直接设置
  51. applyUniforms();
  52. }

  53. 这个函数就是真正的设置Uniform的值
  54. void GLProgram::setUniformsForBuiltins(const Mat4 &matrixMV)
  55. {
  56. auto& matrixP = _director->getMatrix(MATRIX_STACK_TYPE::MATRIX_STACK_PROJECTION);
  57.  
  58. if (_flags.usesP)
  59. setUniformLocationWithMatrix4fv(_builtInUniforms[UNIFORM_P_MATRIX], matrixP.m, );
  60.  
  61. if (_flags.usesMV)
  62. setUniformLocationWithMatrix4fv(_builtInUniforms[UNIFORM_MV_MATRIX], matrixMV.m, );
  63.  
  64. if (_flags.usesMVP) {
  65. Mat4 matrixMVP = matrixP * matrixMV;
  66. setUniformLocationWithMatrix4fv(_builtInUniforms[UNIFORM_MVP_MATRIX], matrixMVP.m, );
  67. }
  68.  
  69. if (_flags.usesNormal)
  70. {
  71. Mat4 mvInverse = matrixMV;
  72. mvInverse.m[] = mvInverse.m[] = mvInverse.m[] = 0.0f;
  73. mvInverse.inverse();
  74. mvInverse.transpose();
  75. GLfloat normalMat[];
  76. normalMat[] = mvInverse.m[];normalMat[] = mvInverse.m[];normalMat[] = mvInverse.m[];
  77. normalMat[] = mvInverse.m[];normalMat[] = mvInverse.m[];normalMat[] = mvInverse.m[];
  78. normalMat[] = mvInverse.m[];normalMat[] = mvInverse.m[];normalMat[] = mvInverse.m[];
  79. setUniformLocationWithMatrix3fv(_builtInUniforms[UNIFORM_NORMAL_MATRIX], normalMat, );
  80. }
  81.  
  82. if (_flags.usesTime) {
  83. // This doesn't give the most accurate global time value.
  84. // Cocos2D doesn't store a high precision time value, so this will have to do.
  85. // Getting Mach time per frame per shader using time could be extremely expensive.
  86. float time = _director->getTotalFrames() * _director->getAnimationInterval();
  87.  
  88. setUniformLocationWith4f(_builtInUniforms[GLProgram::UNIFORM_TIME], time/10.0, time, time*, time*);
  89. setUniformLocationWith4f(_builtInUniforms[GLProgram::UNIFORM_SIN_TIME], time/8.0, time/4.0, time/2.0, sinf(time));
  90. setUniformLocationWith4f(_builtInUniforms[GLProgram::UNIFORM_COS_TIME], time/8.0, time/4.0, time/2.0, cosf(time));
  91. }
  92.  
  93. if (_flags.usesRandom)
  94. setUniformLocationWith4f(_builtInUniforms[GLProgram::UNIFORM_RANDOM01], CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1(), CCRANDOM_0_1());
  95. }

cocos Uniforms值的赋值的更多相关文章

  1. jquery select取值,赋值操作

    select">jquery select取值,赋值操作 一.获取Select 获取select 选中的 text : $("#ddlRegType").find( ...

  2. Salesforce中所有常用类型字段的取值与赋值

    Salesforce中所有常用字段类型的定义以及如何用代码进行取值和赋值: Field Type的定义: http://www.salesforce.com/us/developer/docs/api ...

  3. jQuery对表单元素的取值和赋值操作代码

    使用常规的思路:$(“#keyword”).value 取值是取不到的,因为此时$(‘#keydord’)已经不是个element,而是个jquery对象,所以应该使用:$(“#keyword”).v ...

  4. [前端 2]常用的JQuery和Dom页面取值与赋值

    导读:书到用时方恨少,需要基础知识的时候,才悔恨自己没有总结学习好.前段时间调了好长时间的页面,突然发现自己之前不怎么在意的取值和赋值,真的是自己一个很薄弱的地方,有时候查半天都找不到一个对的,现在用 ...

  5. 浅谈jquery关于select框的取值和赋值

    浅谈jquery关于select框的取值和赋值   jQuery("#select_id").change(function(){}); // 1.为Select添加事件,当选择其 ...

  6. Python:高级主题之(属性取值和赋值过程、属性描述符、装饰器)

    Python:高级主题之(属性取值和赋值过程.属性描述符.装饰器) 背景 学习了Javascript才知道原来属性的取值和赋值操作访问的“位置”可能不同.还有词法作用域这个东西,这也是我学习任何一门语 ...

  7. jQuery对表单元素的取值和赋值操作代码(转)

    使用常规的思路:$("#keyword").value 取值是取不到的,因为此时$('#keydord')已经不是个element,而是个jquery对象,所以应该使用:$(&qu ...

  8. Jquery给网页的title取值和赋值

    //获取title的值 var title_val=$('#id').attr('title'); alert(title_val); //修改title的值.赋值给title $('#id2').a ...

  9. html常用标签的取值和赋值操作

    我们在html页面当中,面对各种各样的标签,经常需要处理取值和赋值的问题,下面,就把常见的一些html标签元素的取值和赋值操作进行总结整理,以后备用. 1.button:改变button按钮上面的值, ...

随机推荐

  1. 题解 POJ 2559【Largest Rectangle in a Histogram】(单调栈)

    题目链接:http://poj.org/problem?id=2559 思路:单调栈 什么是单调栈? 单调栈,顾名思义,就是单调的栈,也就是占中存的东西永远是单调(也就是递增或递减)的 如何实现一个单 ...

  2. QT之Qt之Q_PROPERTY宏理解

    在初学Qt的过程中,时不时地要通过F2快捷键来查看QT类的定义,发现类定义中有许多Q_PROPERTY的东西,比如最常用的QWidget的类定义: Qt中的Q_PROPERTY宏在Qt中是很常用的,那 ...

  3. 生意bisynes单词bisynes商业

    英语bisynes商务概念的提出是改革的产物,有一个演变的过程:贸易部--商业部.外贸部--内贸部--内贸局--商务部.是内外贸一体化的概念. 中文名:商务 外文名:Business,Bisynes商 ...

  4. Redis特点分析及性能优化

    一.Key >Redis key值是二进制安全的,这意味着可以可以使用任何二进制序列作为key值.空字符串也是有效的key值. >key取值原则 1.键值不需要太长,消耗内存,且在数据中查 ...

  5. 排序算法的c++实现——冒泡排序

    冒泡排序 冒泡排序是我们大多数人接触到的第一种排序算法,原理简单易懂,不多解释.说明三点: 1. 冒泡排序是稳定排序,只有当两个元素不同时才会交换: 2. 冒泡排序是原址排序,不需要借助额外的空间; ...

  6. Pandas 之 Series / DataFrame 初识

    import numpy as np import pandas as pd Pandas will be a major tool of interest throughout(贯穿) much o ...

  7. Win10 Microsoft Store 微软商店 Error 0x00000193 解决方法

    0x00 前言 最近使用 CFW 过程中使用 Fiddle Web Debug 设置 Store 的回环代理的过程中发现无论是否使用代理,Store 都无法访问网络的问题,在最下面的提示中出现了 0x ...

  8. RHEL6+GFS2+MYSQL高可用

    RHCS集群安装部署 组件介绍: luci: luci是一个基于web的,用来管理和配置RHCS集群,通过luci可以轻松的搭建一个功能强大的集群系统,节点主机可以使用ricci来和luci 管理段进 ...

  9. CentOS6.7安装部署Nginx(详解主配置文件)

    keepalived + nginx   :实现高可用 nginx: web服务器 反向代理,也支持缓存(缓存在磁盘上) 支持FastCGI tengine:淘宝官方在nginx原有的代码的基础上对n ...

  10. 洛谷P5092 [USACO2004OPEN]Cube Stacking 方块游戏 (带权并查集)

    题目描述 约翰和贝茜在玩一个方块游戏.编号为 1\ldots n 1-n 的 n n ( 1 \leq n \leq 30000 1≤n≤30000 )个方块正放在地上,每个构成一个立方柱. 游戏开始 ...