2017-07-16 121 views
-3

我正在製作一個簡單的像素自上而下的遊戲。我想在那裏添加一些簡單的燈光,但我不知道做到這一點的最佳方式。這張照片是我想要實現的光的一個例子。
http://imgur.com/a/PpYiR
當我搜索到這個任務時,我只看到了這種光的解決方案。
https://www.youtube.com/watch?v=mVlYsGOkkyM
但是當光源靠近時,我需要增加紋理部分的亮度。如果我在不使用UV的情況下對GL_QUADS使用紋理,我該如何做到這一點?openGL簡單的2d光

+0

您是否想過着色?請閱讀[我如何問一個好問題?](https://stackoverflow.com/help/how-to-ask) – Rabbid76

+0

對於固定管道(無着色器),您可以使用[原生OpenGL燈](https:/ /www.cse.msu.edu/~cse872/tutorial3.html)設置爲點光源。或者對自定義模式使用alpha紋理+混合。 – Spektre

回答

-1

好的,我的回答可能不會完全回答你的問題,但它會引導你走向正確的道路。

看起來您正在使用即時模式,現在已折舊並更改爲VBO(頂點緩衝對象)將使您的工作更輕鬆。

照片中的照明似乎是手繪的。即使是最好的算法,也無法完全實現這種照明風格。

你真的有兩個選擇來解決你的問題,他們都需要紋理座標和着色器。

您可以使用光照貼圖,它使用預先生成的紋理乘以四邊形紋理。這是非常快的,但需要某種工具來生成光照貼圖,這可能在目前有點頭痛。

相反,學習基於着色器的照明。 3D照明存在許多教程,但2D的原理保持不變。 有些Google會爲您提供實現着色器所需的資源。 一個基本距離的基於照明算法將看起來像這樣:

GL_Color = texturecolor * 1.0/distance(light_position,world_position); 

它乘以紋理像素的由紋理像素多遠是從光位置的顏色。有一些教程更深入地討論了這一點。

如果您想讓照明效果看起來像第一張圖像中的「復古」,則可以在後處理步驟中對顏色進行縮減採樣。

+0

這不是問題的答案。 – Rabbid76