opengles实现卡通效果
来源:互联网 发布:行知职高吧 编辑:程序博客网 时间:2024/04/24 13:32
核心shader实现
const char* vs ={"attribute vec3 inVertex;""attribute vec3 inNormal;"//法线"uniform mat4 MVPMatrix;""uniform vec3 LightDirection;"//光的方向"uniform vec3 EyePosition;""varying vec2 TexCoord;""void main()""{""gl_Position=MVPMatrix*vec4(inVertex,1.0);""vec3 eyeDirection=normalize(EyePosition-inVertex);""TexCoord.x=dot(LightDirection,inNormal);"//dot(x, y): 点积,各分量分别相乘 后 相加"TexCoord.y=dot(eyeDirection,inNormal);""}"};const char* ps ={"precision lowp float;""uniform sampler2D sTexture;""varying vec2 TexCoord;""const vec3 cBaseColor=vec3(1,1,1);""void main()""{""gl_FragColor=vec4(cBaseColor*texture2D(sTexture, TexCoord).rgb,1.0);""}"};渲染函数
virtual void onRender(Program_CELL& shader,CELL3RDCamera& camera) {static float angle = 0;matrix4 matRot(1);matRot.rotateY(angle);matrix4 matTrans;matTrans.translate(0,5,0);matrix4 matScale(1);matScale.scale(0.3f,0.3f,0.3f);//总的模型变换矩阵matrix4 matModel = matTrans*matRot*matScale;angle += 1.0f;//观察点坐标 也就是眼睛的位置float4 vMsEyePos = float4(0, 0, 125, 1)*matModel;_device.setUniform3fv(shader.EyePosition,1,&vMsEyePos.x);//从世界空间转换方向光到模型空间float4 vMsLightDir = float4(1, 2, 1, 0)*matModel;//光的入射方向//归一化float3 vMsLightDirS = normalize(float3(vMsLightDir.x,vMsLightDir.y,vMsLightDir.z));_device.setUniform3fv(shader.LightDirection,1,&vMsLightDirS.x);//光源位置float4 vMsLightPos = float4(50,20,40,1);vMsLightPos = vMsLightPos*matModel;matrix4 MVP = camera._matProj*camera._matView*matModel;_device.setUniformMatrix4fv(shader.MVPMatrix,1,false,MVP.data());VertexBumpMap* vert = &_arVertexs.front();_device.attributePointer(shader.inVertex,3,GL_FLOAT,GL_FALSE,sizeof(VertexBumpMap),vert);_device.attributePointer(shader.inNormal, 3, GL_FLOAT, GL_FALSE, sizeof(VertexBumpMap), &vert[0]._normal);_device.drawElements(GL_TRIANGLES,_arFaces.size()*3,GL_UNSIGNED_SHORT,&_arFaces.front()); }
阅读全文
0 0
- opengles实现卡通效果
- opengles实现雾化效果
- opengles 2.0 爆炸效果实现
- opengles之卡通着色算法
- 游戏中实现角色选中后卡通边缘效果
- 《Mastering Opencv读书笔记》第一章 实现图像卡通效果
- 【Shader】用一张渐变图实现卡通渲染效果
- 日式卡通渲染的效果的unity实现
- 卡通渲染效果脚本
- Shader toon 卡通效果
- 卡通渲染效果shard-1
- 卡通渲染效果shard-2
- android opengles光照效果-镜面光
- Android OpenGLES 实现结构
- opengles实现画中画功能
- opengles实现场景控制
- opengles实现方向光
- opengles实现点光源
- iOS Quart2D绘图之UIGraphicsGetCurrentContext基础
- 动态规划---实现输出最大公共子序列的长度以及输出最大子字符串(java语言描述)
- Java基础教程10-逻辑运算-与或
- [C++ Primer Plus学习笔记Ⅱ]const的用法归纳与整理
- iOS10 拍照打开相册选择图片
- opengles实现卡通效果
- ACM:O: 一二三
- jQuery的事件绑定
- Android studio下进行9patch图片的编辑
- django 注销用户
- 查看索引的使用情况
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
- 动态规划
- RestTemplate 深度解析