タイルシートをテクスチャとしてロードしていて、テクスチャから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タイルなので、Tile
16の場合は、左側のタイルとタイルシートの上部から1つのタイルになります。しかし、これは私が得るものです
つまり、左上が[0][0]
で、右下が[1][0]
何が間違っているのかわかりません。どんな助けでも大歓迎です。
ありがとう。
また、それが正しいタイルをレンダリングする場合でも、タイルが上記のように終了するTile == 0
とすぐに言及する必要があります。Tile > 0