これは簡単ではないようですが、ポイントスプライトでテクスチャの一部を使用するのは非常に困難です。私は広範囲にグーグルグーグルで様々な答えを出しましたが、これらのどれもが私が持っている特定の問題に対処していません。 +スプライトシートのスプライトを指しiOSのポイントスプライトにテクスチャ(スプライトシート/テクスチャマップ)の一部を適用するOpenGL ES 2.0
- Basics of point sprite drawing
- How to deal with point sprites rendering as solid squares
- How to alter orientation of a point sprite
- How to use multiple textures with a point spriteを、ここに近づいてきて...
- されています:私はこれまで学んできたが、
以前に行われましたが、OpenGL ES 2.0(1.0ではなく)でのみ可能です
- 私が働いてポイントスプライトのセットを持っている:ここでは
は
私がでてる
私が達成しようとしているものの図です。すべて同じ単一の正方形の画像を使用します。例:円の16x16画像がうまくいきます。
コード:
バーテックスシェーダ
uniform mat4 Projection;
uniform mat4 Modelview;
uniform float PointSize;
attribute vec4 Position;
attribute vec2 TextureCoordIn;
varying vec2 TextureCoord;
void main(void)
{
gl_Position = Projection * Modelview * Position;
TextureCoord = TextureCoordIn;
gl_PointSize = PointSize;
}
フラグメントシェーダ私が上でこだわって何
varying mediump vec2 TextureCoord;
uniform sampler2D Sampler;
void main(void)
{
// Using my TextureCoord just draws a grey square, so
// I'm likely generating texture coords that texture2D doesn't like.
gl_FragColor = texture2D(Sampler, TextureCoord);
// Using gl_PointCoord just draws my whole sprite map
// gl_FragColor = texture2D(Sampler, gl_PointCoord);
}
:
- フラグメントシェーダーで
gl_PointCoord
変数を使用する方法がわかりません。最初にgl_PointCoord
には何が含まれていますか?どうして?データはどこにありますか? - どのようなテクスチャ座標が渡されるのか分かりません。たとえば、ポイントスプライトは、スプライトシートのどの部分をテクスチャ座標に基づいて使用するのですか?私は効果的に4セットのテクスチャ座標(各頂点ごとに1つ)を持つ四角形を描画するのに慣れていますが、これはどのように異なっていますか?
まだ立ち往生、誰もが持っている例シェーダ? –
ソートされました、以下の回答。 –