2009-03-01 3 views

答えて

1

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(); 
+0

ええ、でも高さが必要です。 – William

+0

高さは幅と同じですが、同じ変数を使用しますが、合計幅ではなく合計高さに基づいて拡大/縮小します。 –

関連する問題