2016-07-24 64 views
2

嘿,我目前在使用glBlendFunc爲bleding不同勢着色器,但OpenGL的一個系統,我想這樣做獲取當前片段顏色

fragColor = currentColor * lightAmount; 

我試圖用gl_Color但其depricated和我的引擎不讓我使用它。

+0

不,我需要分配給fragColor,因爲我使用GLSL 330,如果我只是將fragColor分配給lightingamount,我場景中的所有東西都變成白色 – Swiftprog

+0

你不能。 OpenGL ES的擴展允許在某些平臺上使用。請參閱以前的類似問題:http://stackoverflow.com/questions/16531185/reading-current-framebuffer。或者,即使它處理深度值,基本上是相同的:http://stackoverflow.com/questions/23362076/opengl-how-to-access-depth-buffer-values-or-gl-fragcoord-z- VS-渲染-d。 –

+0

究竟是什麼'currentColor'和'lightAmount'? – peppe

回答

4

根據this document,片段着色器中沒有片段顏色的內置訪問。 你可以做的是渲染你的先前的通行證在另一個紋理,發送這些紋理到GPU(作爲制服),並在你的最後一遍進行混合。

+0

與我的解決方案相同:) – Swiftprog

+0

我將如何去加載sampler2D?我已經將我的光通和「漫射」通道渲染成單獨的紋理,然後我將這些通道發送到合成通道着色器,但我不確定採樣器的紋理應該是什麼 – Swiftprog

+1

您可以將texcoords與正在渲染的四邊形相關聯,他們的頂點座標,或者使用gl_FragCoord和視口尺寸 – Zouch