Exp*_* HP 5 javascript webgl opengl-es-2.0 regl
我发现自己在 webGl 中使用的许多符号和域约定中有点迷失。看看这个 regl 示例(它显示了狒狒测试图像)。以下是我对它的理解:
GL_TRIANGLE。(-2, 0),(0, -2),(2, 2)在世界空间。把它画在纸上,看起来这是专门选择的,因为它包含了该区域[0,1] x [0,1]。uv从世界空间获取它的值,包括这个[0,1] x [0,1]区域(它是 的域texture2d)。如果我理解正确,惯例是+u指向图像的右边缘,+v指向顶部。gl_Position设置为1 - 2*uv,以便图像占据[-1,1] x [-1,1], z=0“剪辑空间”,无论是什么。+{u,v}方向对应-{x,y}!gl_Position任何与屏幕相关的镜像。我看到讨论它是左撇子,但这只是z相对于世界坐标的否定。(例如这里的这个问题)简而言之,在我看来,这个图像也应该垂直镜像。
我错过了什么?
为了后代,代码复制如下:(MIT许可)
const regl = require('regl')()
const baboon = require('baboon-image')
regl({
frag: `
precision mediump float;
uniform sampler2D texture;
varying vec2 uv;
void main () {
gl_FragColor = texture2D(texture, uv);
}`,
vert: `
precision mediump float;
attribute vec2 position;
varying vec2 uv;
void main () {
uv = position;
gl_Position = vec4(1.0 - 2.0 * position, 0, 1);
}`,
attributes: {
position: [
-2, 0,
0, -2,
2, 2]
},
uniforms: {
texture: regl.texture(baboon)
},
count: 3
})()
Run Code Online (Sandbox Code Playgroud)