0
私は自分のプロジェクトでSOILを使用しています。単一のテクスチャを取り込み、最初のテクスチャの異なる部分を使用してテクスチャの配列に変換する必要があります。 (スプライトシートを使用する場合)。C++のSOILを使って1つのテクスチャをそれらの配列に分割する方法はありますか?
私は途中でSDLとOpenGLを使用しています。
私は自分のプロジェクトでSOILを使用しています。単一のテクスチャを取り込み、最初のテクスチャの異なる部分を使用してテクスチャの配列に変換する必要があります。 (スプライトシートを使用する場合)。C++のSOILを使って1つのテクスチャをそれらの配列に分割する方法はありますか?
私は途中でSDLとOpenGLを使用しています。
OpenGLのような最新の3D apiでスプライトシートを使用する典型的な方法は、テクスチャ座標を使用して個々のテクスチャの異なる部分に対処することです。それを分割することはできますが、テクスチャ座標を使用する方がはるかにリソースにやさしいです。
例えば、あなたは(96x32の合計サイズ)32個の画素で、水平方向の各32個の画素を3つのフレームとの単純なスプライトシートがあった場合、あなたは3フレームを描画するために、次のコードを使用する:
// I assume you have bound your source texture
// This is the U coordinate's origin in texture space
float xStart = 64.0f/96.0f;
// This is one frame width in texture space
float xIncrement = 32.0f/96.0f;
glBegin(GL_QUADS);
glTexCoord2f(xStart, 0);
glVertex2f(-16.0f, 16.0f);
glTexCoord2f(xStart, 1.0f);
glVertex2f(-16.0f, -16.0f);
glTexCoord2f(xStart + xIncrement, 0);
glVertex2f(16.0f, 16.0f);
glTexCoord2f(xStart + xIncrement, 1.0f);
glVertex2f(16.0f, -16.0f);
glEnd();
ええ、でも高さが必要です。 – William
高さは幅と同じですが、同じ変数を使用しますが、合計幅ではなく合計高さに基づいて拡大/縮小します。 –