私はopengl es 2.0プログラミングガイドからopenglを学びました。彼らは爆発のような粒子効果を持っています。頂点シェーダにmat4投影行列を追加することでサンプルコードを拡張しようとしていますが、シェーダはコンパイルして動作しますが、投影を考慮して位置を決めるのに問題があります。OpenGL esポイントに投影行列を追加するスプライト粒子効果の頂点シェーダ
const char* ParticleExplosionVertexShader = STRINGIFY (
uniform float u_time;
uniform vec3 u_centerPosition;
uniform mat4 Projection;
attribute float a_lifetime;
attribute vec3 a_startPosition;
attribute vec3 a_endPosition;
varying float v_lifetime;
void main()
{
if (u_time <= a_lifetime)
{
gl_Position.xyz = a_startPosition + (u_time * a_endPosition);
gl_Position.xyz += u_centerPosition;
gl_Position.w = 1.0;
}
else
gl_Position = vec4(-1000, -1000, 0, 0);
v_lifetime = 1.0 - (u_time/a_lifetime);
v_lifetime = clamp (v_lifetime, 0.0, 1.0);
gl_PointSize = (v_lifetime * v_lifetime) * 40.0;
}
);
私はエラーなしでラインに投影を追加することができていますが、残念ながらここでそのコードがの最後にD =画面のオブジェクトを配置しているとして本当に必要ないのは、次のように私が持っているコードです。その寿命
gl_Position = Projection * vec4(-1000, -1000, 0, 0);
は、私はまた、
にラインgl_Position.xyz += u_centerPosition;
を変更しようとしています
しかし、私は、私はそれが
私が何か間違ったことをやってほしいと、それは置いてもらう運がなかったですか?それとも、誰かがポイントスプライトで行うべきでないような投影行列を持っていないという理由がありますか?私はにどうあるべきかにすべてのヘルプやポインタは
おかげ
編集理解されるであろう:あなたは私からより多くの情報が必要な場合は私に知らせてください