1

タイルシートをテクスチャとしてロードしていて、テクスチャから1つのタイルをレンダリングしようとしています

glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glBindTexture(GL_TEXTURE_2D, TileSheet);
float TY = (Tile / 16) * 0.0625;
float TX = (Tile % 16) * 0.0625;

glBegin(GL_QUADS);
    glTexCoord2f(TX, TY); glTexCoord2f(0, 0); glVertex3f(X, Y, 0);
    glTexCoord2f(TX + 0.0625, TY); glVertex3f(X + TILE_SIZE, Y, 0);
    glTexCoord2f(TX + 0.0625, TY + 0.0625); glVertex3f(X + TILE_SIZE, Y + TILE_SIZE, 0);
    glTexCoord2f(TX, TY + 0.0625); glVertex3f(X, Y + TILE_SIZE, 0);
glEnd();

Tileはであり、intタイルシートにレンダリングするタイルを表します。タイルシート 0.0625の幅と高さ/1行あたりのタイル数(512 / 16)

つまり、タイルシートの幅は16タイルなので、Tile16の場合は、左側のタイルとタイルシートの上部から1つのタイルになります。しかし、これは私が得るものですここに画像の説明を入力してください

つまり、左上が[0][0]で、右下が[1][0]何が間違っているのかわかりません。どんな助けでも大歓迎です。

ありがとう。

また、それが正しいタイルをレンダリングする場合でも、タイルが上記のように終了するTile == 0とすぐに言及する必要があります。Tile > 0

4

1 に答える 1

1

を呼び出すglTexCoord2f前に2回呼び出しますglVertex3f。それは正しく見えません。

次のようになります。

glTexCoord2f(TX, TY); glTexCoord2f(0, 0); glVertex3f(X, Y, 0);

する必要があります:

glTexCoord2f(TX, TY); glVertex3f(X, Y, 0);

于 2012-04-24T01:05:35.410 に答える