在移动游戏中,GPU大部分时间都是闲着的,而我们很多时刻可以直接来操作
着色器在屏幕上的显示来节约我们的图片资源,容量以及内存等等。
着色器
着色器(英语:shader)应用于计算机图形学领域,指一组供计算机图形资源在执行渲染任务时使用的指令。程序员将着色器应用于图形处理器(GPU)的可编程流水线,来实现三维应用程序。这样的图形处理器有别于传统的固定流水线处理器,为GPU编程带来更高的灵活性和适应性。
用过opengl的同学对着色器应该不会陌生,作为移动游戏终端设备的开发者,对于图形图像的了解是必不可少的,对于opengl es 2.x才引入的着色器,WWDC的专题讲座有一节就是讲opengl es的新特性的,结合AVFoundation那一节,我们也能从中可以学到不少东西的。
opengl es的着色器 有.fsh和.vsh两个文件 这两个文件在被编译和链接后就可以产生可执行程序 与GPU交互.vsh 是顶点shader 用与顶点计算 可以理解控制顶点的位置 在这个文件中我们通常会传入当前顶点的位置,和纹理的坐标.
GLSL
GLSL - OpenGL Shading Language 也称作 GLslang,是一个以C语言为基础的高阶着色语言。它是由 OpenGL ARB 所建立,提供开发者对绘图管线更多的直接控制,而无需使用汇编语言或硬件规格语言。
随着近年来绘图卡的进步, 已在渲染管线中的顶点(vertex)和片断(fragment)层次中,加入更具弹性的新功能。 达到在这个层次中,使用片断和顶点着色器的可编程性。
void main(void)
{
gl_Position = ftransform();
}
void main(void)
{
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
GLSL的函式和控制结构
类似于 C语言,GLSL 支援循环和分支,包括 if、else、if/else、for、do-while、break、continue 等。
支援使用者定义函式,且各种常用的函式也已内建。这也就让绘图卡制造商,能够在硬件层次上最佳化这些内建的函式。许多函式与 C 语言相同,如 exp() 以及 abs(),其它绘图编程特有的,如 smoothstep() 以及 texture2D()
OpenGL 着色语言规格定义了 22 个基本资料类型,有些用法与 C 相同,其它的是绘图处理器特有的。
.
void – 用于没有返回值的函式
bool – 条件类型,其值可以是真或假
int – 带负号整数
float – 浮点数
vec2 – 2 个浮点数组成的向量
vec3 – 3 个浮点数组成的向量
vec4 – 4 个浮点数组成的向量
bvec2 – 2 个布林组成的向量
bvec3 – 3 个布林组成的向量
bvec4 – 4 个布林组成的向量
ivec2 – 2 个整数组成的向量
ivec3 – 3 个整数组成的向量
ivec4 – 4 个整数组成的向量
mat2 – 浮点数的 2X2 矩阵
mat3 – 浮点数的 3X3 矩阵
mat4 – 浮点数的 4X4 矩阵
sampler1D – 用来存取一维纹理的句柄(handle)(或:操作,作名词解。)
sampler2D – 用来存取二维纹理的句柄
sampler3D – 用来存取三维纹理的句柄
samplerCube – 用来存取立方映射纹理的句柄
sampler1Dshadow – 用来存取一维深度纹理的句柄
sampler2Dshadow – 用来存取二维深度纹理的句柄
下面一章,我会举例介绍一下操作着色器在移动游戏(cocos-2dx)开发中的应用。
[部分资料来源于wiki ]
分享到:
相关推荐
高斯模糊是一种图像模糊滤波器,它用正态分布计算图像中每个像素的变换。
cocos2d-x实战项目 01.cocos2d-x原理及环境配置.rar 03.cocostudio使用方法及UI控制.rar 04.XML文件读取与骨骼动画.rarcocos2d-x实战项目 01.cocos2d-x原理及环境配置.rar 03.cocostudio使用方法及UI控制.rar 04.XML...
cocos2d-x进阶教程1_5Lua中循环语句和逻辑运算关键字.mp4 cocos2d-x进阶教程1_6LuaTable使用1.mp4 cocos2d-x进阶教程1_7LuaTable使用2.mp4 cocos2d-x进阶教程1_8LuaTable使用3.mp4 cocos2d-x进阶教程1_9LuaTable读写...
Cocos2d-x 2.X实现的一基于CCLabelTTF + Shader的字体描边效果,具体可以参考这篇博客,http://blog.csdn.net/oktears/article/details/43200757
cocos2dx3.x_shader仅供学习
原文地址:http://blog.csdn.net/teng_ontheway/article/details/39190919
kbengine-cocos2dx-cocos2dx-consoft.zip.针对kbengine引擎的cocos端 官方demo
cocos2d-0.99.4-x-0.7.1.zip
精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发 精通COCOS2D-X游戏开发
│ cocos2dx-3.10-api.lua │ cocos2dx-3.11-api.lua │ cocos2dx-3.12-api.lua │ cocos2dx-3.6-api.lua │ cocos2dx-3.7-api.lua │ cocos2dx-3.7.1-api.lua │ cocos2dx-3.8-api.lua │ cocos2dx-3.8.1-api.lua ...
cocos2d-js 开发插件,idea插件 cocos-intellij-plugin-2.0.0-beta.zip
3D ToolKit for cocos2dx 是一个简单的cocos2d-x 3D扩展,可以方便地在cocos2dx环境中创建3D图形。 基于cocos2d-x 2.2开发。 已实现功能: 1,向量和矩阵运算。 2,扩展的3D相机。(支持 透视投影 和 ...
基于libqrencode实现的显示二维码的控件,使用DrawNode绘制显示区。
方头像裁剪为圆头像,cocos2dx中,使用shader实现该功能~
Get a gentle introduction to the Cocos2d-JS framework to begin working with sprite manipulations, animations, and other 2d game development topics. This book covers environment setup and getting ...
cocos2dx游戏实例源码,大概有三十种游戏
cocos2d接口说明-0.99.4-x-0.7.0-api-reference
cocos-shader 挖Kongshader 渐变色shader
cocos-code-ide-win64-1.2.0
iOS实例开发源码——lhunath-Cocos2D-iPhone.old-9ab3d34.zip