gpt4 book ai didi

c - 不完全适合像素光栅的 2D openGL 绘图线

转载 作者:行者123 更新时间:2023-12-01 11:57:49 24 4
gpt4 key购买 nike

我在 OpenGL 中绘制类似于 LED VU 表的东西。结果应该像这样的垂直条:

Animated vumeters

不幸的是,我的绘图空间有限,我必须恰好在其上放置 18 个小节。这会产生 3.6 像素的条间距。

绘制时,这会导致线条之间的间隙出现明显的差异,因为间隙要么是 2 像素宽,要么是 1 像素宽。我正在寻找一种使用子像素渲染的解决方案,而不是通过某种抗锯齿来“伪造”线条,以便所有间隙看起来都具有相同的宽度。

到目前为止,这是我的代码

glEnable(GL_LINE_SMOOTH);
glHint(GL_LINE_SMOOTH, GL_NICEST);
for (int i = 0; i < 18; ++i) {
float bBottom = barBottom + i*3.6f;
glBegin(GL_LINES);
glLineWidth(2);
glVertex2f(bRight,bBottom);
glVertex2f(bLeft,bBottom);
glEnd();
}
glDisable(GL_LINE_SMOOTH);

不幸的是,打开线条平滑没有看到明显的效果。有什么建议吗?

最佳答案

两个想法:

  1. 将所有条形图绘制到一个大的屏幕外纹理,使间隙和宽度都相等,然后使用双线性过滤将结果 blit 到所需的屏幕位置和大小。

  2. 让一位艺术家绘制所有完全亮起的条形,以便看起来不错,然后从每个条形的顶部向下绘制带有 alpha channel 的黑色矩形,以使图像的所需部分变暗。

关于c - 不完全适合像素光栅的 2D openGL 绘图线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4435450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com