文字和着色器

时间:2016-08-28 15:45:02

标签: c++ glsl sfml

使用SFML 2.4,我想在屏幕上绘制文本并使用片段着色器对其应用效果。但是当我尝试它时,文本用正方形而不是字符绘制

片段着色器:

void main() { gl_FragColor= vec4(1,0,0,1); }

SFML文本代码:

sf::Text t;
t.setFont(myFont);
t.setCharacterSize(10);
t.setColor(sf::Color::White);
t.setString("this is a test");

//myWindow.draw(t); // This displays a white "this is a test"
//myWindow.draw(t, myShader); // This displays red squares instead of characters

我希望我的着色器以红色显示该文本。但相反,我得到了红色方块。每个正方形都是应该在那里的角色边界框的大小。 我错过了一些明显的东西吗?或者是sf :: Text只是不打算以这种方式使用?

2 个答案:

答案 0 :(得分:2)

我不熟悉SFML文本渲染的工作原理,但我非常怀疑它将文本放入纹理中。在这种情况下,片段着色器必须对纹理进行采样以确定给定片段的颜色。只需将片段颜色设置为红色即可:将每个渲染的片段设置为红色。试试这个:

- 'nohup mvn $MAVEN_CLI_OPTS spring-boot:run -Drun.jvmArguments="-D$SPRING_BOOT_PROFILE" &'

这将对从顶点着色器传入的纹理坐标处的当前绑定纹理进行采样,并将其着色为红色。

答案 1 :(得分:0)

您的着色器将整个片段设置为红色,从而在文本上着色。

尝试将片段的颜色相乘而不是设置它,如下所示:

void main() { gl_FragColor *= vec4(1,0,0,1); }