procedure TSkybox.DrawBox(pos : TVector3f);
var px,py,pz : GLFloat;
dov : single;
begin
if not HasBeenSet then exit;
Engine.Main.LastTexId := -1;
glEnable(GL_TEXTURE_2D);
if FList = -1 then begin
dov := Engine.Map.WORLD_MAX*2;
// left, back und top sind falsch
px := (- dov / 2);//+pos.x;
py := (- dov / 2);//+pos.y;
pz := (- dov / 2);//+pos.z;
FList := glGenLists(1);
glNewList(FList, GL_COMPILE);
// Back
glColor3f(1,1,1);
glBindTexture(GL_TEXTURE_2D, FTextures[3]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glBegin(GL_QUADS);
glTexCoord2f(1, 0); glVertex3f(px + dov, py, pz);
glTexCoord2f(1, 1); glVertex3f(px + dov, py + dov, pz);
glTexCoord2f(0, 1); glVertex3f(px, py + dov, pz);
glTexCoord2f(0, 0); glVertex3f(px, py, pz);
glEnd;
// Front
glBindTexture(GL_TEXTURE_2D, FTextures[2]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glBegin(GL_QUADS);
glTexCoord2f(1, 0); glVertex3f(px, py, pz + dov);
glTexCoord2f(1, 1); glVertex3f(px, py + dov, pz + dov);
glTexCoord2f(0, 1); glVertex3f(px + dov, py + dov, pz + dov);
glTexCoord2f(0, 0); glVertex3f(px + dov, py, pz + dov);
glEnd;
// Bottom
glBindTexture(GL_TEXTURE_2D, FTextures[5]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glBegin(GL_QUADS);
glTexCoord2f(1, 1); glVertex3f(px, py, pz);
glTexCoord2f(1, 0); glVertex3f(px, py, pz + dov);
glTexCoord2f(0, 0); glVertex3f(px + dov, py, pz + dov);
glTexCoord2f(0, 1); glVertex3f(px + dov, py, pz);
glEnd;
// Top
glBindTexture(GL_TEXTURE_2D, FTextures[4]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glBegin(GL_QUADS);
glTexCoord2f(0, 0); glVertex3f(px+dov, py + dov, pz);
glTexCoord2f(1, 0); glVertex3f(px+dov, py + dov, pz + dov);
glTexCoord2f(1, 1); glVertex3f(px, py + dov, pz + dov);
glTexCoord2f(0, 1); glVertex3f(px, py + dov, pz);
glEnd;
// Left
glBindTexture(GL_TEXTURE_2D, FTextures[1]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glBegin(GL_QUADS);
glTexCoord2f(1, 1); glVertex3f(px, py + dov, pz);
glTexCoord2f(0, 1); glVertex3f(px, py + dov, pz + dov);
glTexCoord2f(0, 0); glVertex3f(px, py, pz + dov);
glTexCoord2f(1, 0); glVertex3f(px, py, pz);
glEnd;
// Right
glBindTexture(GL_TEXTURE_2D, FTextures[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glBegin(GL_QUADS);
glTexCoord2f(0, 0); glVertex3f(px + dov, py, pz);
glTexCoord2f(1, 0); glVertex3f(px + dov, py, pz + dov);
glTexCoord2f(1, 1); glVertex3f(px + dov, py + dov, pz + dov);
glTexCoord2f(0, 1); glVertex3f(px + dov, py + dov, pz);
glEnd;
glEndList;
end;
// Call the Displaylist of our Skybox
// glLoadIdentity;
glMatrixMode(GL_MODELVIEW);
glPushMatrix;
glTranslatef(pos.X, pos.y, pos.Z);
glCallList(FList);
glPopMatrix;
end;