一、OpenGL图片绘制的一般步骤:
1、编写顶点着色器和片元着色器;
2、编写需要绘制的图形类,包括:加载着色器脚本内容,加载图片数据,图片绘制;
3、配置绘制环境,绘制图片。
二、具体如下:
1、 编写顶点着色器程序(glsl语言):
attribute vec4 vPosition; attribute vec2 vCoordinate;//纹理数据 uniform mat4 vMatrix; //给片元传递数据(纹理,变换前的顶点,变换后的顶点) varying vec2 aCoordinate; varying vec4 aPos; varying vec4 gPosition; void main(){ gl_Position=vMatrix*vPosition; aPos=vPosition; aCoordinate=vCoordinate; gPosition=vMatrix*vPosition; }
2、 编写片元着色器程序(glsl语言):
precision mediump float; uniform sampler2D vTexture; uniform int vChangeType; uniform vec3 vChangeColor; uniform int vIsHalf; uniform float uXY; //给片元传递的数据(纹理数据,变换前顶点,变换后顶点) varying vec2 aCoordinate; varying vec4 aPos; varying vec4 gPosition; //修改颜色(防止颜色值超过一) void modifyColor(vec4 color){ color.r=max(min(color.r,1.0),0.0); color.g=max(min(color.g,1.0),0.0); color.b=max(min(color.b,1.0),0.0); color.a=max(min(color.a,1.0),0.0); } void main() { vec4 nColor=texture2D(vTexture,aCoordinate); if(aPos.x>0.0 || vIsHalf == 0){ if(vChangeType==1){ //浮点算法 Gray=R * 0.3+G * 0.59+B * 0.114 float gray=(nColor.r*0.3+nColor.g*0.59+nColor.b*0.114); gl_FragColor=vec4(gray,gray,gray,nColor.a); }else if(vChangeType==2){ vec4 colorWarm=nColor+vec4(0.1,0.1,0.0,0.0); modifyColor(colorWarm); gl_FragColor=colorWarm; }else if(vChangeType==3){ vec4 colorCold=nColor+vec4(0.0,0.0,0.1,0.0); modifyColor(colorCold); gl_FragColor=colorCold; }else if(vChangeType==4){