【发布时间】:2012-03-28 06:03:04
【问题描述】:
我正在尝试创建一种方法来绘制具有指定大小和纹理的立方体。问题是,当我调整立方体的大小时,纹理并没有随之调整大小。例如,如果我以 0.5F 大小绘制,则 16x16 纹理仅绘制 8x8 像素。我做错了什么?
static void drawCube(float size, Texture tex, int x, int y, int z) {
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTranslatef(x, y, z);
tex.bind();
glPolygonMode(GL_FRONT, GL_FILL);
glBegin(GL_QUADS);
glTexCoord2d(0.0f * size, 0.0f * size);
glVertex3f(-1.0f * size, -1.0f * size, 1.0f * size);
glTexCoord2d(1.0f * size, 0.0f * size);
glVertex3f(1.0f * size, -1.0f * size, 1.0f * size);
glTexCoord2d(1.0f * size, 1.0f * size);
glVertex3f(1.0f * size, 1.0f * size, 1.0f * size);
glTexCoord2d(0.0f * size, 1.0f * size);
glVertex3f(-1.0f * size, 1.0f * size, 1.0f * size);
glEnd();
glBegin(GL_QUADS);
glTexCoord2d(1.0f * size, 0.0f * size);
glVertex3f(-1.0f * size, -1.0f * size, -1.0f * size);
glTexCoord2d(1.0f * size, 1.0f * size);
glVertex3f(-1.0f * size, 1.0f * size, -1.0f * size);
glTexCoord2d(0.0f * size, 1.0f * size);
glVertex3f(1.0f * size, 1.0f * size, -1.0f * size);
glTexCoord2d(0.0f * size, 0.0f * size);
glVertex3f(1.0f * size, -1.0f * size, -1.0f * size);
glEnd();
glBegin(GL_QUADS);
glTexCoord2d(0.0f * size, 1.0f * size);
glVertex3f(-1.0f * size, 1.0f * size, -1.0f * size);
glTexCoord2d(0.0f * size, 0.0f * size);
glVertex3f(-1.0f * size, 1.0f * size, 1.0f * size);
glTexCoord2d(1.0f * size, 0.0f * size);
glVertex3f(1.0f * size, 1.0f * size, 1.0f * size);
glTexCoord2d(1.0f * size, 1.0f * size);
glVertex3f(1.0f * size, 1.0f * size, -1.0f * size);
glEnd();
glBegin(GL_QUADS);
glTexCoord2d(1.0f * size, 1.0f * size);
glVertex3f(-1.0f * size, -1.0f * size, -1.0f * size);
glTexCoord2d(0.0f * size, 1.0f * size);
glVertex3f(1.0f * size, -1.0f * size, -1.0f * size);
glTexCoord2d(0.0f * size, 0.0f * size);
glVertex3f(1.0f * size, -1.0f * size, 1.0f * size);
glTexCoord2d(1.0f * size, 0.0f * size);
glVertex3f(-1.0f * size, -1.0f * size, 1.0f * size);
glEnd();
glBegin(GL_QUADS);
glTexCoord2d(1.0f * size, 0.0f * size);
glVertex3f(1.0f * size, -1.0f * size, -1.0f * size);
glTexCoord2d(1.0f * size, 1.0f * size);
glVertex3f(1.0f * size, 1.0f * size, -1.0f * size);
glTexCoord2d(0.0f * size, 1.0f * size);
glVertex3f(1.0f * size, 1.0f * size, 1.0f * size);
glTexCoord2d(0.0f * size, 0.0f * size);
glVertex3f(1.0f * size, -1.0f * size, 1.0f * size);
glEnd();
glBegin(GL_QUADS);
glTexCoord2d(0.0f * size, 0.0f * size);
glVertex3f(-1.0f * size, -1.0f * size, -1.0f * size);
glTexCoord2d(1.0f * size, 0.0f * size);
glVertex3f(-1.0f * size, -1.0f * size, 1.0f * size);
glTexCoord2d(1.0f * size, 1.0f * size);
glVertex3f(-1.0f * size, 1.0f * size, 1.0f * size);
glTexCoord2d(0.0f * size, 1.0f * size);
glVertex3f(-1.0f * size, 1.0f * size, -1.0f * size);
glEnd();
glTranslatef(-x, -y, -z);
}
【问题讨论】:
标签: java opengl textures lwjgl cube