2013-09-24 44 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