- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
WebGL 图像处理
WebGL 图像处理
WebGL 图像处理
在 WebGL 中图像处理是很简单的,多么简单?
为了在 WebGL 中绘制图像,我们需要使⽤纹理。类似于当 染代替像素时,WebGL
会需要操作投影矩阵的坐标,WebGL 读取纹理时需要获取纹理坐标。纹理坐标范围
是从 0 .0 到 1.0 。
因为我们仅需要绘制由两个三⾓形组成的矩形,我们需要告诉 WebGL 在矩阵中纹理
对应的那个点。我们可以使⽤特殊的被称为多变变量,会将这些信息从顶点着⾊器传
递到⽚段着⾊器。WebGL 将会插⼊这些值,这些值会在顶点着⾊器中,当对每个像
素绘制时均会调⽤⽚段着⾊器。
我们需要在纹理坐标传递过程中添加更多的信息,然后将他们传递到⽚段着⾊器中。
attribute vec2 a_texCoord;
...
varying vec2 v_texCoord;
void main() {
...
// pass the texCoord to the fragment shader
// The PU will interpolate this value between points
v_texCoord = a_texCoord;
}
然后,我们提供⼀个⽚段着⾊器来查找颜⾊纹理。
script id=2d-fragment-shader type=x-shader/x-fragment
precision mediump float;
// our texture
uniform sampler2D u_image;
// the texCoords passed in from the vertex shader.
varying vec2 v_texCoord;
void main() {
// Look up a color from the texture.
gl_FragColor = texture2D(u_image, v_texCoord);
}
/script
最后,我们需要加载⼀个图⽚,然后创建⼀个问题,将该图⽚传递到纹理⾥⾯。因
为,是在浏览器⾥⾯显⽰,所以图⽚是异步加载,所以我们安置我们的代码来等待纹
理的加载。⼀旦,加载完成就可以绘制。
function main() {
var image = new Image();
image.src = http://someimage/on/our/server; // MUST BE SAME
image.onload = function() {
render(image);
}
}
function render(image) {
...
// all the code we had before.
...
// look up where the texture coordinates need to go.
var texCoordLocation = gl.getAttribLocation(program, a_texCoor
// provide texture coordinates for the rectangle.
var texCoordBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([
0.0, 0.0,
1.0, 0.0,
0.0, 1.0,
0.0, 1.0,
1.0, 0.0,
1.0, 1.0]), gl.STATIC_DRAW);
gl.enableVertexAttribArray(texCoordLocation);
gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false,
// Create a texture.
var texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texture);
// Set the parameters so we can ren
文档评论(0)