我正在嘗試渲染一些文本,但此時我正在分別渲染每個字形,這很慢且無效。OpenGL - 將幀緩衝區紋理設置爲完全透明
所以我要改變制度,使文本只是渲染成一個單獨的紋理一次,只要稍有改變,然後紋理應該在主渲染通道屏幕呈現。
到目前爲止,問題是,在主場景中繪製它,我只有兩個選項。我可以指定一個特定的顏色(例如綠色)爲'透明',使用該顏色清除文本的幀緩衝區紋理,繪製文本,然後使用着色器將結果渲染到主場景中,減去透明顏色。
雖然這將工作,我將無法使用該顏色的實際文字了。
相反,我寧願完全清除幀緩衝區紋理的alpha(本質上是爲了得到一個無色的空白板)然後繪製文本,但這似乎不可能?
glColorMask(GL_FALSE,GL_FALSE,GL_FALSE,GL_TRUE);
glClearColor(0,0,0,0);
glClear(GL_COLOR_BUFFER_BIT);
這樣做只會將指定的rgb值與alpha作爲這些顏色的「強度」。在這種情況下,它不會做任何事情,因爲顏色組件被禁用。但是我需要改變幀緩衝區中紋理的alpha值,而不使用glDrawPixels(這太慢了)。
現在,我當然可以編寫一個額外的着色器來將每個片段的alpha值設置爲0,但這看起來不像是有效/快速。
處理這樣的事情的最好方法是什麼?
爲什麼你需要清除alpha?如果字形具有透明度,則應將其透明度值寫入文本FBO。 – 2014-08-28 12:45:44