在OpenGL+FTGL中绘制带阴影的文本

在OpenGL+FTGL中绘制带阴影的文本,opengl,text,drawing,ftgl,Opengl,Text,Drawing,Ftgl,我正在使用FTGL库在OpenGL中绘制文本,一切正常,但是我想在文本中添加阴影。我尝试的是用黑色绘制相同的文本,然后用普通颜色在上面绘制文本,如下面的伪代码: glColor3f(0, 0, 0); // outline color DrawText(x-1, y-1, str); DrawText(x+1, y-1, str); DrawText(x+1, y+1, str); DrawText(x-1, y+1, str); glColor3f(1, 1, 1); // primary c

我正在使用FTGL库在OpenGL中绘制文本,一切正常,但是我想在文本中添加阴影。我尝试的是用黑色绘制相同的文本,然后用普通颜色在上面绘制文本,如下面的伪代码:

glColor3f(0, 0, 0); // outline color
DrawText(x-1, y-1, str);
DrawText(x+1, y-1, str);
DrawText(x+1, y+1, str);
DrawText(x-1, y+1, str);
glColor3f(1, 1, 1); // primary color
DrawText(x,y,str);
但是我不得不画了5遍,它看起来还是不太好

我想在截图上看到类似的东西


可能有很多方法可以实现这一点——一些方法的质量比其他方法更高

下面是我要做的:

将文本渲染为内存中的灰度像素贴图。 可能使用快速库(如QImageBlitz或ImageMagick)对其执行高斯模糊。模糊半径应为2-3倍左右。 对模糊图像应用陡峭的色调曲线,使亮度范围[0.0,0.9]映射到接近0.0。这使它不再模糊,结果是文本的增肥版本。色调曲线应如下所示:

使用适当的混合模式以黑色渲染该阴影,以模拟alpha混合。然后在其顶部呈现常规黄色文本,并选择一个小偏移量。
此外,根据阴影的柔和程度,可以使用不同的色调曲线。线性色调曲线会产生非常柔和的阴影。

可能有很多方法可以实现这一点,有些方法的质量比其他方法更高

下面是我要做的:

将文本渲染为内存中的灰度像素贴图。 可能使用快速库(如QImageBlitz或ImageMagick)对其执行高斯模糊。模糊半径应为2-3倍左右。 对模糊图像应用陡峭的色调曲线,使亮度范围[0.0,0.9]映射到接近0.0。这使它不再模糊,结果是文本的增肥版本。色调曲线应如下所示:

使用适当的混合模式以黑色渲染该阴影,以模拟alpha混合。然后在其顶部呈现常规黄色文本,并选择一个小偏移量。
此外,根据阴影的柔和程度,可以使用不同的色调曲线。线性色调曲线会产生非常柔和的阴影。

我通常这样做:

将颜色设置为半透明黑色,例如0,0,0,0.5 在所有九个方向上绘制文本,移动到边上,然后沿对角线移动 绘制fg文本。 它看起来相当不错,您可以通过渲染列表和翻译来加速它


请看这里:

我通常是这样做的:

将颜色设置为半透明黑色,例如0,0,0,0.5 在所有九个方向上绘制文本,移动到边上,然后沿对角线移动 绘制fg文本。 它看起来相当不错,您可以通过渲染列表和翻译来加速它

请看这里: