WebGL之点精灵的旋转(Rotation Sprite)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了WebGL之点精灵的旋转(Rotation Sprite),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2387字,纯文字阅读大概需要4分钟。
内容图文
var VSHADER_SOURCE =[ "attribute vec4 a_Position;", "uniform mat4 u_ProjMatrix;", "uniform float u_PointSize;", "void main() {", " gl_PointSize = u_PointSize;", " gl_Position = u_ProjMatrix * a_Position;", "}" ].join("\n") var FSHADER_SOURCE = [ ‘precision mediump float;‘, "uniform sampler2D u_Sampler;", "uniform float u_Angle" "void main() {", " float x=gl_PointCoord.x-0.5;", " float y=gl_PointCoord.y-0.5;", " float nx=(cos(u_Angle) * x - sin(u_Angle ) * y);", " float ny = (sin( u_Angle ) * x + cos( u_Angle ) * y);", " gl_FragColor = texture2D( u_Sampler, vec2( nx+0.5,ny+0.5) );", "}" ].join("\n") function main() { var canvas = document.getElementById(‘webgl‘); var gl = getWebGLContext(canvas); if (!gl) { console.log(‘Failed to get the rendering context for WebGL‘); return; } if (!initShaders(gl, VSHADER_SOURCE, FSHADER_SOURCE)) { console.log(‘Failed to intialize shaders.‘); return; } var projMatrix4=new Matrix4(); projMatrix4.setOrtho(-1,1,-1,1,0.0,1.0); var u_projMatrix=gl.getUniformLocation(gl.program,‘u_ProjMatrix‘); gl.uniformMatrix4fv(u_projMatrix,false,projMatrix4.elements); var u_Angle=gl.getUniformLocation(gl.program,‘u_Angle‘); gl.uniform1f(u_Angle,3.14*0.25); var position=gl.getAttribLocation(gl.program,‘a_Position‘); gl.vertexAttrib3f(position,0.0,0.0,0.0); gl.clearColor(0, 0, 0, 1); gl.clear(gl.COLOR_BUFFER_BIT); loadImg(gl); } function loadImg(gl){ var image=new Image(); image.onload=function(){ drawPic(gl,image) } image.src="pic.png"; } function drawPic(gl,image){ var width=image.width; var height=image.height; var pointSize=gl.getUniformLocation(gl.program,"u_PointSize"); gl.uniform1f(pointSize,Math.max(width,height)); var texture=gl.createTexture(); //gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL,1); gl.activeTexture(gl.TEXTURE0); gl.bindTexture(gl.TEXTURE_2D,texture); gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MAG_FILTER,gl.NEAREST); gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_MIN_FILTER,gl.NEAREST); gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_S,gl.CLAMP_TO_EDGE); gl.texParameteri(gl.TEXTURE_2D,gl.TEXTURE_WRAP_T,gl.CLAMP_TO_EDGE); gl.uniform1i(gl.getUniformLocation(gl.program,"u_Sampler"),0); gl.texImage2D(gl.TEXTURE_2D,0,gl.RGBA,gl.RGBA,gl.UNSIGNED_BYTE,image); gl.clear(gl.COLOR_BUFFER_BIT); gl.drawArrays(gl.POINTS,0,1); gl.bindTexture(gl.TEXTURE_2D, null); }
原文:http://www.cnblogs.com/wema/p/7084855.html
内容总结
以上是互联网集市为您收集整理的WebGL之点精灵的旋转(Rotation Sprite)全部内容,希望文章能够帮你解决WebGL之点精灵的旋转(Rotation Sprite)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。