WebGL 顶点着色器缩放几何,与正交投影中的方面无关

问题描述 投票:0回答:0

我在顶点着色器中遇到几何比例问题。我有一个正交投影,并且希望无论缩放如何,文本都具有相同的大小(在屏幕上)。我设法做到了:

position.xy *= scale2d(vec2(0.005 / projectionMatrix[0].x, 0.005 / projectionMatrix[1].y));

位置在局部空间。它工作正常,但只有当视口是正方形时(查看正交投影矩阵公式,这是合理的)。当视口是矩形时,我得到一个拉伸的几何体(在这种情况下,纵横比约为 1.4 并按 x 轴拉伸):

我尝试按 aspect 划分 x 坐标,这部分解决了问题:

position.xy *= scale2d(vec2(0.005 / projectionMatrix[0].x / aspect, 0.005 / projectionMatrix[1].y));

这在保留纵横比方面有效,但是当我调整视口的 y 轴大小时,几何图形会缩小/放大(再次 - 这是合理的,因为高度 - projectionMatrix[1].y 缩小)。无论视口尺寸如何,我都希望它具有相同的大小。

有人可以解释一下如何达到我想要的效果吗?

顺便提一句。我也想知道为什么 0.005 因子是正确的。

编辑:所以基本上我知道我希望文本在屏幕坐标中有 12px 高度。如何缩放它保留方面?

glsl webgl vertex-shader
© www.soinside.com 2019 - 2024. All rights reserved.