OpenGLES---点精灵
PositionSpriteShader.hpp
//varying 关键字 :vs和fs共享数据(建议vs和fs中速写一致)
const char *vs={"precision lowp float;""uniform mat4 _MVP;""uniform float _positionSize;""attribute vec3 _position;\n" //点大小"attribute vec4 _color;\n" //外边出入的颜色"varying vec4 _outColor;\n" //共享颜色"void main(){\n"" vec4 pos = vec4(_position.x,_position.y,_position.z,1);\n"" _outColor = _color;\n"" gl_Position = _MVP * pos;\n"" gl_PointSize = _positionSize;\n""}"
};
const char *fs={"precision lowp float;""varying vec4 _outColor;""uniform sampler2D _tId;" //纹理id"void main(){"" vec4 tColor = texture2D(_tId,gl_PointCoord);"" gl_FragColor= _outColor * tColor;""}"
};shaderValue=createP(vs,fs);
_MVP = glGetUniformLocation(shaderValue.pID,"_MVP");
_color = glGetAttribLocation(shaderValue.pID,"_color");
_position = glGetAttribLocation(shaderValue.pID,"_position");
_positionSize=glGetUniformLocation(shaderValue.pID,"_positionSize");_tId = glGetUniformLocation(shaderValue.pID,"_tId");
vec2 gl_PointCoord 点精灵的二维空间坐标范围在(0.0, 0.0)到(1.0, 1.0)之间,仅用于点图元和点精灵开启的情况下
PositionSpriteWin.hpp
//清楚缓冲
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//设置视口的大小
glViewport(0,0,_width,_height);struct Vertex{CELL::float3 pos;CELL::float2 uvpos;CELL::float4 rgba;
};float x=150,y=100,z=-1;
float w = 100;
float h = 100;
float rept=100;Vertex rood[]={CELL::float3(x,y,z), CELL::float2(0,0), CELL::float4(1,1,1,1),CELL::float3(x,y+h,z), CELL::float2(0,rept), CELL::float4(1,1,1,1),CELL::float3(x+w,y,z), CELL::float2(rept,0), CELL::float4(1,1,1,1),CELL::float3(x+w,y+h,z),CELL::float2(rept,rept), CELL::float4(1,1,1,1),
};CELL::matrix4 project=CELL::ortho<float>(0,(float)_width,(float)_height,0,-100,100);shader.begin();/** 给Uniform变量赋值* @param location 变量* @param count 值数量(当前数据里面有几个值 1,2,3,4)* @param transpose 是否转置(true,false)* @param value 赋值数据*/glUniformMatrix4fv(shader._MVP,1,false,project.data());glBindTexture(GL_TEXTURE_2D,textureId);glUniform1i(shader._tId,0);glUniform1f(shader._positionSize,54);/** 设置顶点属性* @param indx 属性id* @param size 值数量(2,3,4) * @param type 数据类型 (GL_UNSIGNED_BYTE,GL_FLOAT...)* @param normalized 规格化(false,true)* @param stride 偏移量(数据的偏移量)* @param ptr 数据*/glVertexAttribPointer(shader._color,4,GL_FLOAT,false,sizeof(Vertex),&rood[0].rgba);glVertexAttribPointer(shader._position,3,GL_FLOAT,false,sizeof(Vertex),&rood[0].pos);glDrawArrays(GL_POINTS,0,sizeof(rood)/sizeof(rood[0]));shader.end();
源码地址
http://pan.baidu.com/s/1geVargZ OpenGL_ES(6.6).zip
画了4个点(点精灵不要传uv坐标)
OpenGLES---点精灵相关推荐
- opengles 2.0 点精灵 多边形偏移等备忘
opengles 2.0 点精灵 多边形偏移等备忘 opengl es 2.0只支持三种绘画单元: 三角形,直线和点精灵. GL_TRIANGLES GL_TRIANG ...
- opengles绘制点精灵
什么是点精灵 opengl图形由顶点构成,所谓点精灵就是对点进行纹理映射,简单说就是把一副纹理贴在一个点上 原来4个顶点构成一个矩形,现在一个顶点就完成了,典型的如粒子效果,云雾,水流火花都可以用点精 ...
- 视频教程-OpenGLES萌谷手册(iOS2018版)-其他
OpenGLES萌谷手册(iOS2018版) 在大学期间系统的学习了opengl.计算机图形学.计算机视觉的算法,与2013年加入4399,任职暗黑战神项目组主程,2015年3月底离职创业,创办了战火 ...
- genesis cam 最新版_触屏精灵下载_触屏精灵最新版下载[其他行业]
触屏精灵最新版是一款实用的触摸屏自助查询软件,触屏精灵最新版拥有丰富的UI控件,触屏精灵最新版广泛应用于政府机构.检察院.景区.银行.大型企业展厅展馆.软件可以支持视频.Word.Pdf. ...
- 用OpenGLES实现yuv420p视频播放界面
背景 例子TFLive这个项目里,是我按着ijkPlayer写的直播播放器,要运行需要编译ffmpeg的库,网盘里存了一份, 提取码:vjce.OpenGL ES播放相关的在在OpenGLES的文件夹 ...
- 代码简介:向圣诞老人和他的精灵学习Google Analytics(分析)
Here are three stories we published this week that are worth your time: 这是我们本周发布的三个值得您关注的故事: Learn G ...
- cocos2dx 3.x(动态改变精灵的背景图片)
//更换精灵CCSprite的图片有两种方式. //直接通过图片更换 //使用setTexture(CCTexture2D*)函数,可以重新设置精灵类的纹理图片. // auto bg = Sprit ...
- SpriteBuilder中如何平均拉伸精灵帧动画的距离
首先要在Timeline中选中所有的精灵帧,可以通过如下2种的任意一种办法达成: 1按下Shift键的同时鼠标单击它们 2鼠标在Timeline空白区拖拽直到拉出的矩形包围住所有精灵帧方块后放开鼠标. ...
- 阿里AI labs发布两大天猫精灵新品,将与平头哥共同定制智能语音芯片
作者 | 夕颜 出品 | AI科技大本营(ID:rgznai100) 2019 年,去年刮起的一阵智能音箱热浪似乎稍微冷却下来,新产品不再像雨后春笋一样层出不穷,挺过市场洗礼的产品更是凤毛麟角,这些产 ...
- android x86 按键精灵,界面版按键精灵的使用【包含内置浏览器、打开程序的方法】...
包含界面的脚本.....................................................自己拖拽包,根据这里的控件名命名,然后自己拖拽 '打开九阴真经 Event Fo ...
最新文章
- ajax校验用户名可用吗,基于jQuery实现Ajax验证用户名是否可用实例
- 风变编程python第一关脸黑怪我喽_风变编程:Python适合编程初学者学习吗?
- Sql Server 2005的1433端口打开和进行远程连接
- 【DIY】废物利用,最简单粗暴便宜的DIY定时器方法,没有之一
- git 怎么读_python3中开源代码怎么读?
- eclipse的下载JDK的安装与配置
- CF626F. Bear and Fair Set
- 开始我的blog之旅
- JavaScript——模块化的历史进程梳理
- Python Project Euler 013:100个50位数和
- 几种常用的视频接口(端子)
- 漏桶算法和令牌桶算法
- Keil MDK 5安装了GD32 pack包工程里却找不到
- java怎么实现事务_java实现简单的事务
- 【24计算机考研】备考前必须了解的避坑小知识,建议收藏
- python numpy dtype object_python – 创建numpy数组时dtype = object意味着什么?
- 如何用Java写一个企业晨报?我来教你!
- 夏日当空心深如深渊——雨桐花
- Apache Dubbo(概念篇)
- scite for php,SCITE配置系列