2013-03-03 118 views
3

我正在製作一個繪畫軟件,我幾乎將畫筆改進到性能和外觀的體面水平,但是我還有最後一個問題。爲了獲得我期待的性能(多重撤消/歷史級別),我必須將每個形狀繪製到紋理上,並在簡單的4頂點多邊形上使用該紋理。一切順利,性能非常棒,外觀也很棒(特別是在啓用多重採樣後)。但是,在單獨的幀緩衝區中繪製紋理的過程中,某個輪廓圍繞着每個對象,如下圖所示。我發現輪廓的顏色與glClearColor中的顏色相同。我懷疑是混合?我用紋理邊緣透明問題

glEnable(GL_BLEND); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

但是不確定。我怎樣才能擺脫輪廓?

enter image description here

回答

2

嘗試使用預乘阿爾法混合:

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); 

對於這個與任何顏色搭配工作,你也應該清楚其中你可以繪製紋理像這樣的colorbuffer:

glClearColor(0, 0, 0, 0); 
glClear(GL_COLOR_BUFFER_BIT); 

但是,如果您有半透明部件,這可能會導致問題。