Glsl 有人能解释这些与WebGL相关的片段吗
我指的是学习如何在webgl中渲染纹理 我面临一些疑问,因为初学者不太容易理解。 这些片段对GLSL意味着什么:Glsl 有人能解释这些与WebGL相关的片段吗,glsl,Glsl,我指的是学习如何在webgl中渲染纹理 我面临一些疑问,因为初学者不太容易理解。 这些片段对GLSL意味着什么: vec2 zeroToOne = a_position / u_resolution; vec2 zeroToTwo = zeroToOne * 2.0; vec2 clipSpace = zeroToTwo - 1.0; 另外,如果我的图像较大,我不想填充整个画布。我想将所有纹理渲染为512*384 4:3,如何通过修改顶点来实现这一点。此代码可能会将_位置从0..N-1纹
vec2 zeroToOne = a_position / u_resolution;
vec2 zeroToTwo = zeroToOne * 2.0;
vec2 clipSpace = zeroToTwo - 1.0;
另外,如果我的图像较大,我不想填充整个画布。我想将所有纹理渲染为512*384 4:3,如何通过修改顶点来实现这一点。此代码可能会将_位置从0..N-1纹理分辨率空间转换为
-1..1范围。既然我也写了你链接的示例,我很好奇如何改进该网站上已有的解释 您链接到的示例来自 那一页的顶部写着 这是本书的延续。如果你还没读过,我建议你 那页写着 WebGL只关心两件事。剪辑空间坐标和颜色。作为使用WebGL的程序员,您的工作是为WebGL提供这两样东西。为此,您提供了2个着色器。提供剪辑空间坐标的顶点着色器和提供颜色的片段着色器 剪贴空间坐标始终从-1到+1,无论画布大小如何 然后,它显示了一个使用剪辑空间坐标的示例 之后,它说我们可能更愿意在像素中工作,并显示了一个着色器,其中包含详细说明如何从像素转换到剪辑空间的注释 对于2D的东西,你可能更愿意在像素中工作,而不是在clipspace中工作,所以让我们更改着色器,这样我们可以提供像素中的矩形,并让它为我们转换为clipspace。这是新的顶点着色器
attribute vec2 a_position;
uniform vec2 u_resolution;
void main() {
// convert the rectangle from pixels to 0.0 to 1.0
vec2 zeroToOne = a_position / u_resolution;
// convert from 0->1 to 0->2
vec2 zeroToTwo = zeroToOne * 2.0;
// convert from 0->2 to -1->+1 (clipspace)
vec2 clipSpace = zeroToTwo - 1.0;
gl_Position = vec4(clipSpace, 0, 1);
}
事实上,您链接到的示例在代码中有完全相同的注释
我很想听听我如何能把它说得更清楚的想法好的。另一个问题呢?有什么想法吗?好吧,也许我对这些概念感到困惑。很抱歉,你做得很好。谢谢