PointSprites (Cocos2D ソースに触発された) で ParticleSystem を使用しています。しかし、OpenGL ES 2.0 の機能をどのように再構築するのだろうか
glEnable(GL_POINT_SPRITE_OES);
glEnableClientState(GL_POINT_SIZE_ARRAY_OES);
glPointSizePointerOES(GL_FLOAT,sizeof(PointSprite),(GLvoid*) (sizeof(GL_FLOAT)*2));
glDisableClientState(GL_POINT_SIZE_ARRAY_OES);
glDisable(GL_POINT_SPRITE_OES);
これらは、OpenGL ES 2.0 コンテキストを使用すると BAD_ACCESS を生成します。PointSprite ごとに 2 つの TRIANGLES を使用する必要がありますか? しかし、それはおそらくあまり効率的ではありません (余分な頂点のオーバーヘッド)。
編集:だから、提案された解決策に関する私の新しい問題: https://gamedev.stackexchange.com/questions/11095/opengl-es-2-0-point-sprites-size/15528#15528
バッチ呼び出しでさまざまなサイズを渡す可能性があります。Uniform の代わりに Attribute を使用することを考えましたが、GL_POINTS を描画していなくても、常に PointSize をシェーダーに渡す必要があります。では、おそらく 2 番目のシェーダー (GL_POINTS のみのシェーダー) でしょうか?! 描画ルーチンのフレームごとにシェーダーを切り替えるためのオーバーヘッドを認識していません (パーティクル システムが使用されている場合は、pointSize なしで通常の GL_TRIANGLES も当然レンダリングしたいため)...これに関するアイデアはありますか?