【发布时间】:2012-04-24 09:05:41
【问题描述】:
我有一个作为纹理加载的 Tilesheet,我正在尝试从纹理中渲染单个图块
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,表示要在 tilesheet 上渲染的 tile
0.0625 是我的 Tilesheet 的宽度和高度 / 每行有多少个瓷砖 (512 / 16)
所以在 tilesheet 中它是 16 瓦宽,所以如果 Tile 是 16,它将是左侧的瓦片和距瓦片顶部的 1 个瓦片。但这就是我得到的
所以左上角是[0][0],右下角是[1][0] 我看不出我做错了什么。任何帮助将不胜感激。
谢谢。
我还应该提到,如果Tile == 0 它呈现正确的图块,但只要Tile > 0 块像上面那样结束。
【问题讨论】:
-
具体问题不清楚。是结果左上角的那个小边框吗?
-
不,那是糟糕的截图编辑。它是草瓦和砖瓦的融合