私はさまざまなサイズのプラットフォームを用意していますが、常に8ピクセルの乗算と常に8ピクセルの高さのゲームを作成しています。GLSL Fragmentシェーダでインテリジェントなタイルテクスチャ
すべてのプラットフォームは、ここでは1のように同じテクスチャを使用します。
テクスチャが3つの8×8のセクションに分割されます。私は最初の8ピクセルが左端にのみ適用されるように、このテクスチャをフラグメントシェーダでタイル化できるようにしたい - ジオメトリの幅から最後の8ピクセルを引いた数のピクセルの中央の8ピクセルのタイル「終了」タイルがレンダリングされる。高い32個のピクセルの幅と8つの画素でこのジオメトリのようなもの:
I、使用フレームワークが頂点とUV座標(単純なテクスチャクワッド)の設定を許可しないので、私はこの問題を解決することができませんジオメトリ。
私はフラグメントシェーダでは、以下のユニフォームを取得:sampler2D
を u_texture - ジオメトリのサイズ -
VEC2 u_sprite_size上記のテクスチャテクスチャをタイルで飾りたい(ピクセル単位)
...と、この変化:
- VEC2v_tex_coord - テクスチャにアクセスするために使用される座標。これらは、ポイント(0.0,0.0)がテクスチャの左下隅の にあるように正規化されています。
コードで他のユニフォームを追加することは可能です。
誰かがフラグメントシェーダーの作成方法の方向を教えてくれますか?
あなたは、デスクトップのOpenGLまたはOpenGL ESについて尋ねていますか?彼らは同じことではないからです。また、サイズが常に8の倍数になることは保証されていますか? –
これは初心者のためのOpenGL-ESですが、私はMacにゲームを移植するので、OpenGLの解決策も必要になります。他の質問には、はい、それは8倍のグリッドに基づくタイルなので、このゲームでは常に8の倍数になります。 – Kim