【发布时间】:2020-05-21 11:52:28
【问题描述】:
我正在尝试使用屏幕上固定大小的 OpenGL 渲染来自 Freetype 的文本(独立于缩放)。 现在我可以实现最后一点,但是,文本不等同于同一操作系统上的另一个程序和相同大小的相同字体。
左边是我的程序,右边是 gedit。如您所见,我的文字在 y 轴上看起来有点裁剪和模糊。 我无法弄清楚问题
这就是我计算顶点的方式:
vec2 v = visibility * ((camera * vec3(char_position.xy, 1)).xy + vertex.xy / viewport * 2.);
这就是我在片段着色器中所做的事情
gl_FragColor = vec4(colorFrag.xyz, texture2D(tex, textureCoordFrag).a);
【问题讨论】:
-
纹理尺寸和屏幕上的尺寸是多少——它们是一样的吗?
-
是的,我数了数像素,大小似乎是正确的。为了检查它,我使用了 FT_Set_Pixel_Sizes 并打印了一个 '|'
-
假设 texcoords 是正确的,看起来顶点坐标是不正确的。也许是 [放置在像素中心而不是像素角。
-
您认为它们没有对齐?它可能来自'vertex.xy / viewport * 2'。 ?我仍然不明白我为什么要 * 2,如果我不这样做,文本比 gedit 小两倍