OpenGLを使用した単純な2D格闘ゲームを開発しようとしていますが、私はキャラクターアニメーションに固執しています。基本的な考え方は、2つの三角形からなる四角形を作成し、この四角形のテクスチャをフレームごとに変更することです。フレームを格納するためにスプライトシートを使用していますが、今はそれらを循環させる最も便利な方法を見つけようとしています。頂点座標およびテクスチャ座標は、GL_STATIC_DRAW
パラメータを使用して、GPUメモリの頂点バッファオブジェクトに格納されます。スプライトシートとOpenGLを使用した2Dスプライトアニメーション
最初のアイデアは、単一のOpenGLテクスチャ(glGenTextures(1, &texture);
)にSOIL
ような外部ライブラリを使用して、スプライトシートをロードし、その後、頂点シェーダフレームごとに渡されるクワッドのテクスチャ座標を変更することで、もしそうアニメーションは4フレームで、テクスチャのS座標を0.0
,0.25
,0.5
、0.75
に変更し、0.0
に戻しました。しかし、それは私がかなり頻繁に私のVBOを変更しなければならないことを意味し、私はそれがかなり高価かもしれないと思った。
glGenTextures(nFrames, &textureArray[0]);
を使用してテクスチャの配列を割り当て、各配列positionmに1つのフレームを格納し、glBindTexture(GL_TEXTURE_2D, textureArray[currFrame]);
を使用して、VBOを変更せずに異なるテクスチャを適用します。しかし、私はスプライトシートをいくつかの画像に分割したくないので、SOIL
のようなライブラリを使ってこれを達成する方法は考えられません。
この場合、最も便利な方法は何ですか?私はいくつかの可能性を評価したいので、コードを提供しませんでした。
私はこれも最善の方法だと思っています。私はすでにこの方向に取り組んでいます。ありがとう。 –