0

小さな Mac アプリでポイント スプライトを描画しようとしています。各スプライトに独自のサイズを持たせたいのですが、OpenGL ES にはクライアント状態 "GL_POINT_SIZE_ARRAY_OES" があることがわかっています。

私はいくつかのグーグルを行い、同じことを行う必要がある(あなたが思うだろう)「GL_POINT_SIZE_ARRAY_APPLE」という同様の値があることを発見しました。しかし、何らかの理由で、そうではないようです。ここに私の描画コードがあります:

glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_POINT_SIZE_ARRAY_APPLE);

glVertexPointer(2, GL_FLOAT, sizeof(SpriteData), spriteVertices);
glPointSizePointerAPPLE(GL_FLOAT, sizeof(SpriteData), spriteVertices + sizeof(LocationF));

glDrawArrays(GL_POINTS, 0, spriteCount);

glDisableClientState(GL_POINT_SIZE_ARRAY_APPLE);
glDisableClientState(GL_VERTEX_ARRAY);

SpriteData は、各スプライトの頂点/サイズ データを含む構造体です。spriteVertices は、その構造体の単なるインターリーブ配列です。

頂点ポインターは正常に機能しています。スプライトを描画していますが、サイズの値を無視しているようです。代わりに、glPointSize() によって設定された値にデフォルト設定されます。

このコードは警告なしでコンパイルされるという事実にもかかわらず、「GL_POINT_SIZE_ARRAY_APPLE」をグーグル検索してもほとんど結果が得られないことは非常に疑わしいと思われます。これは役に立たないパラメーターですか?もしそうなら、他にどうすれば私が望むものを達成できますか?

4

1 に答える 1

0

拡張機能を公開する公式の OpenGL 拡張機能はありませんGL_POINT_SIZE_ARRAY_APPLE。これは、Apple のヘッダーの一部である可能性がありますが、使用しないでください。一般的な頂点配列を使用し、渡した値をポイント サイズとして使用するだけです。

クロスプラットフォーム コードが必要な場合は、システム依存のヘッダーを避ける必要があります。代わりに、適切な OpenGL loaderを使用してください。これには、システムに依存する非標準のデトリタスが含まれないクロスプラットフォーム ヘッダーが付属しています。

于 2013-03-30T00:39:22.543 に答える