cocos2dx之CCGLProgram着色器类
来源:互联网 发布:线程私有数据意义 编辑:程序博客网 时间:2024/06/09 05:56
引擎提供了CCGLProgram类来处理着色器相关操作,对当前绘图程序进行了封装,其中使用频率最高的应该是获取着色器程序的接口:const GLuint getProgram();
该接口返回了当前着色器程序的标识符。后面将会看到,在操作OpenGL的时候,我们常常需要针对不同的着色器程序作设置。注意,这里返回的是一个无符号整型的标识符,而不是一个指针或结构引用,这是OpenGL接口的一个风格。对象(纹理、着色器程序或其他非标准类型)都是使用整型标识符来表示的。
CCGLProgram提供了两个函数导入着色器程序,支持直接从内存的字符串流载入或是从文件中读取。这两个函数的第一个参数均指定了顶点着色器,后一个参数则指定了像素着色器:
/** Initializes the CCGLProgram with a vertex and fragment with bytes array */ bool initWithVertexShaderByteArray(const GLchar* vShaderByteArray, const GLchar* fShaderByteArray); /** Initializes the CCGLProgram with a vertex and fragment with contents of filenames */ bool initWithVertexShaderFilename(const char* vShaderFilename, const char* fShaderFilename);
仅仅加载肯定是不够的,我们还需要给着色器传递运行时必要的输入数据。在着色器中存在两种输入数据,分别被标识为attribute和uniform。
attribute变量是应用程序直接传递给顶点着色器的变量,在段着色器中不能访问。它描述的是每个顶点的属性,如位置、法线等,被限制为向量或标量这样的简单结构。必须为每个顶点指定对应的值,这类似于C中的函数参数。
uniform变量是全局性的,可以同时在顶点着色器和段着色器中访问。在整个渲染流水线中,每个uniform变量都是唯一的,不存在每个像素或顶点需要单独定义的问题,这一点是和C的全局变量类似的。uniform变量的可定义类型会更丰富一些,还可以包括纹理矩阵和纹理,甚至可以通过uniform block自定义复杂的数据类型。
uniform变量是全局性的,可以同时在顶点着色器和段着色器中访问。在整个渲染流水线中,每个uniform变量都是唯一的,不存在每个像素或顶点需要单独定义的问题,这一点是和C的全局变量类似的。uniform变量的可定义类型会更丰富一些,还可以包括纹理矩阵和纹理,甚至可以通过uniform block自定义复杂的数据类型。
int glGetUniformLocation(GLuint program, const GLchar* name);
对uniform变量的设置存在着一系列以"glUniform"为前缀的函数,这些函数的第一个参数为需要设置的参数标识,后面跟若干参数值.
- cocos2dx之CCGLProgram着色器类
- cocos2dx shader分析之CCGLProgram
- cocos2dx shader分析之CCGLProgram
- cocos2dx源码分析:内建着色器
- cocos2dx 2.1.4 shader解析2-CCGLProgram分析
- CCGLProgram简单配置及应用(cocos2dx-lua-v2.2.5)
- OpenGL ES着色器语言之着色
- OpenGL ES着色器语言之着色
- cocos2dx学习笔记(着色器水纹效果)
- cocos2dx学习笔记(着色器水纹效果)
- Opengl入门之着色器
- LearnOpenGL学习之着色器
- C++Directx11开发笔记四:着色器之顶点着色器和像素着色器
- Cocos2dx之CCLabelBMFont类
- Irrlicht学习之使用着色器
- Android之砖块着色器代码
- OpenGL核心技术之几何着色器
- 04 WebGL绘图之着色器
- Windows7 windows8 无法访问默认共享的处理办法
- 区域卫生信息平台唱响医疗信息化主旋律
- xna开发资源收集
- C\C++变量命名规范
- 我的extjs聊天机器人
- cocos2dx之CCGLProgram着色器类
- 照片浏览scrollview and pageCotrol
- android View 保存成Bitmap对象
- Linux下的一个全新的性能测量和调试诊断工具Systemtap【3】System
- Java之美[从菜鸟到高手演变]之Exception .
- Cocos2d-x设计模式之四 :外观模式
- PHP导入导出Excel方法小结
- Ruby中“||=”符号
- 啊是发顺丰的规范