2014-03-26 99 views
0

我渲染藍色和紅色線(在anaglyph的上下文中)。當紅線和藍線重疊時,我想要呈現紫色而不是前面的線。如何在OpenGL中將兩種顏色混合使用?

我正在使用OpenGL。一些到目前爲止,我已經嘗試的代碼是這樣的:

glBlendFunc(GL_ONE, GL_DST_ALPHA); 

這將導致重疊呈現白色,並出現行,如下所示:

我想,也許使用RGB比例因子在這種混合之上將是正確的事情。

所以我嘗試使用glBlendFuncSeparate這需要參數:

  1. 源因子RGB
  2. 目的地因素RGB
  3. 源因子α
  4. 目標因子α

我做不到找到使這個工作適合我的參數。

我也嘗試使用glBlendEquation與加法等式,但沒有注意到在該方法中的任何成功。

如何生成一個函數,將兩條線成功地混合成紫色?

編輯:

我注意到glBlendFunc(GL_ONE, GL_DST_ALPHA)並執行一些混合產生中間色(實際線路只是無意義的在這裏,它只是顯示一些混合)。 enter image description here

+0

你爲什麼不能用着色器做呢? – SAKrisT

+0

您似乎正在將紅色與青色混合。這通常不會使紫色。 – JasonD

+0

@JasonD我明白了,這就是我尋找比例因子混合方法的原因。我正在和一個比我更有經驗的浮雕人物談話,他說紫色的混合對欺騙眼睛很有好處。 – louisdeb

回答

1

典型的混合功能是glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);;請注意,最終顏色會根據繪製順序進行更改。

混合函數不是那麼明顯,所以圖形表示有時更好;請檢查例如this網站。

+0

該網站有[這個圖像](http://www.zeuscmd.com/tutorials/opengles/images/19-Blending04.jpg)這似乎是我想要的混合方法,但它根本不會導致混合。 – louisdeb

+0

你給我的功能也沒有導致混合。我認爲出現的問題是,當我想讓它們混合時,它們並不總是重疊。它們看起來重疊。 (如同它們在投影中不重疊一樣) – louisdeb

+0

您突出顯示的圖像顯示混合藍色和紅色以獲得紫色。你不是混合藍色和紅色,而是混合青色和紅色。 – JasonD

2

我都呈現藍色和紅色線(在浮雕的上下文中)

不是你所期望的答案,但你需要的答案:通常的方法來呈現浮雕圖像在OpenGL 中不是使用混合。混合很難達到正確的水平,你不想用浮雕部分進一步搞亂事情。

有兩種常用的方法:

  • 渲染每個視圖到FBO附紋理,並將它們在一個後處理步驟相結合。

  • 使用glColorMask爲每個渲染步驟選擇活動的顏色通道。

我覺得現在你擅長用色面膜方法:自己如下:

display: 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) 
    glViewport(…) 

    # prepare left view 
    setup_left_view_projection() 
    glColorMask(1,0,0, 1); # red is commonly used for the left eye 

    draw_scene() 

    glClear(GL_DEPTH_BUFFER_BIT) # clear the depth buffer (and just the depth buffer!) 

    # prepare right view 
    setup_right_view_projection() 
    glColorMask(0,1,1, 1); # cyan is commonly used for the right eye 

    draw_scene() 
+0

是的,我已經通過手動計算得到了浮雕渲染效果,這對我來說工作正常。不過,我正在和一位有過浮雕經驗的同行談話,他說,將這兩種顏色混合成紫色會更有效地誘騙眼球。 – louisdeb