2017-07-16 7 views
-3

私は単純なピクセルのトップダウンゲームを作っています。そして、そこにシンプルなライトを追加したいのですが、それを行う最良の方法がわかりません。このイメージは私が実現したい光の例です。
http://imgur.com/a/PpYiR
私がその仕事を捜したとき、私はその種の光のための解決策しか見ませんでした。
https://www.youtube.com/watch?v=mVlYsGOkkyM
しかし、光源が近くにあるときにテクスチャ部分の明るさを増やす必要があります。 UVなしでGL_QUADSでテクスチャを使用している場合は、どうすればよいですか?openGL simple 2d light

+0

シェーディングについて考えましたか? [正しい質問をするにはどうすればいいですか?](https://stackoverflow.com/help/how-to-ask) – Rabbid76

+0

固定パイプライン(シェーダなし)には[ネイティブOpenGLライト](https:///www.cse.msu.edu/~cse872/tutorial3.html)をポイントライトに設定します。または、アルファテクスチャ+カスタムパターンのブレンドを使用します。 – Spektre

答えて

-1

私の回答が完全にあなたの質問に答えるわけではありませんが、正しい道を導きます。

これは即時モードを使用しているようですが、これは現在価値が下がりました.VBO(頂点バッファオブジェクト)に変更すると、あなたの生活が楽になります。

画像の照明が手描きのようです。最適なアルゴリズムでも、その照明スタイルを正確に作成することはできません。

実際には、問題を解決するための2つのオプションがあり、どちらもテクスチャ座標とシェーダが必要です。

ライトマップは、事前に生成されたテクスチャをクワッドのテクスチャに乗じて使用できます。これは非常に高速ですが、ライトマップを生成するためのツールが必要になります。

代わりに、シェーダベースの照明を習得してください。多くのチュートリアルは3Dライティングのために存在しますが、原則は2Dの場合と同じです。 一部のグーグルでは、シェーダを実装するために必要なリソースが得られます。 は、基本的な距離ベースの照明アルゴリズムは次のようになります。

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

これは、テクセルは、光の位置からどれだけ離れているかによって、テクセルの色を乗算します。これについて深く理解しているチュートリアルがあります。

最初のイメージのように照明を「レトロ」にしたい場合は、後処理ステップで色をダウンサンプリングすることができます。

+0

これは質問に対する答えではありません。 – Rabbid76