I'm trying to make a method that will draw a cube with a specified size and texture. Problem is, when I resize the cube, the texture isn't resizing along with it. For example, if I draw with size .5F, only 8x8 pixels of a 16x16 texture draw. What am I doing wrong?
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);
}
The texture coordinates always use a [0..1] coordinate system. If you want to draw the full texture, don't scale the texture coordinates according to the size, ie
glTexCoord2d(1.0f * size, 0.0f * size); // Not good! (For this purpose anyway)
glTexCoord2d(1.0f, 0.0f); // Good!