2013-09-24 48 views
0

我使用顶点和片段着色器,GLSL版本130. Ubuntu 12.04 LTS。着色器工作正常。照明被禁用。使用着色器设置glutBitmapCharacter的栅格颜色

文字通过glutBitmapCharacter()绘制,但颜色不可预知。当我调整着色器使用的调色板并重新编译时,颜色会发生变化。

glColor4f()当然没有效果,因为着色器会覆盖固定的管道行为。那么如何设置glutBitmapCharacter()将渲染的“栅格颜色”呢? (或者每帧应该使用着色器和,然后固定管道?Yuck。)

回答

1

请跟我说说:我不会将OpenGL光栅操作与可编程管道混合使用。正如你发现结果是相当,呃,烦人。

光栅操作已经完全从现代OpenGL中删除(即上述所有内容,包括OpenGL-3.0)。试图与着色器一起使用它们是纯粹的受虐狂。而且看到其他人试图去做它甚至感到很痛苦。所以请不要。

或者应该每帧使用着色器,然后固定管道?

您可以随时在固定功能和着色器之间切换。在需要时使用glUseProgram(0)切换到固定功能。当使用光栅操作时会是这样。但是在使用光栅操作时,您当然仅限于OpenGL-2.1。

+0

感谢您提供更广泛的上下文(以及广泛的戏剧修辞设备!)。那么,在glutBitmapCharacter()之前调用glUseProgram(0)的答案是什么? –

+0

@CamilleGoudeseune:我建议在调用glRasterPos之前禁用着色器,无论如何你必须这样做才能将文本放置在屏幕上。 – datenwolf