2009-07-01 156 views
0

如果這個問題看起來很混亂,我很抱歉。我所看到的行爲對我來說毫無意義。OpenGL/OpenGL ES中的幀緩衝區,紋理和glColor行爲

我有一個Framebuffer渲染到紋理。我渲染紅色,綠色,藍色不同的不透明度的實心矩形到這個紋理。然後我將紋理渲染到屏幕(Framebuffer 0)。附加到紋理的Framebuffer是持久的,並且在每個渲染循環中,我會爲紋理繪製更多的矩形 - 最終填充屏幕。

我發現如果我在將紋理渲染到屏幕之前沒有將glColor()設置爲白色100%不透明度,則不會呈現特定顏色的矩形。那就是如果在渲染紋理之前設置了glColor(1.f, 0.f, 0.f, 1.f),則只繪製藍色矩形。

我不明白爲什麼當前顏色會影響紋理的渲染(我認爲它就像一個blit)。我曾試過各種texParameter(...)的電話無濟於事,但我只是猜測。

謝謝。

+0

我覺得函數glColor()在OpenGL ES中不可用 – 2010-07-17 09:42:16

回答

2

其中,glColor()設置用於頂點的顏色。繪製紋理矩形時,每個紋理元素樣本都會被頂點顏色疊加。實際上,如果所有頂點具有相同的顏色,那麼原始頂點的線性交互作用就是頂點顏色。

本教程介紹了這一切的含義相當不錯:

http://www.falloutsoftware.com/tutorials/gl/gl4.htm

只有奇數部分這裏是你的聲明,glColor(1,0,0,1)導致只繪製藍色矩形。如果glColor的參數是紅色,綠色,藍色和alpha,我希望只有紅色矩形。希望有一個錯字或參數順序是不同的,例如紅色= 0,綠色= 0,藍色= 1和alpha = 1。