- for x := 1 to map_width do
- begin
- for y := 1 to map_width do
- begin
- Frustum.Calculate;
- if (x > 1) and (y>1) then glBindTexture(GL_TEXTURE_2D,tex[(map[x,y])]);
- ///////////////////////////////
- /// Haupt-Quad = ohne Alpha ///
- ///////////////////////////////
- glBegin(GL_QUADS);
- glColor4f(1,1,1,1);
- if Frustum.IsSphereWithin(x*q_w +(q_w/2), y*q_w +(q_w/2),b,q_w) then
- begin
- glTexCoord2f(0,0); glVertex3f(x*q_w , y*q_w ,b);
- glTexCoord2f(0,1); glVertex3f(x*q_w +q_w, y*q_w ,b);
- glTexCoord2f(1,1); glVertex3f(x*q_w +q_w, y*q_w +q_w,b);
- glTexCoord2f(1,0); glVertex3f(x*q_w , y*q_w +q_w,b);
- pf := pf + 1;
- end;
- ///////////////////////////////
- /// Neben-Quads = mit Alpha ///
- ///////////////////7///////////
- if map[x-1,y-1] <> map[x,y] then
- begin
- if (Frustum.IsPointWithin(x*q_w -q_w, y*q_w -q_w,b)) or (Frustum.IsPointWithin(x*q_w , y*q_w -q_w,b)) or (Frustum.IsPointWithin(x*q_w , y*q_w ,b)) or (Frustum.IsPointWithin(x*q_w -q_w, y*q_w ,b)) then
- begin
- glColor4f(1,1,1,0);
- glTexCoord2f(0,0); glVertex3f(x*q_w -q_w, y*q_w -q_w,b); // Quad links unten
- glTexCoord2f(0,1); glVertex3f(x*q_w , y*q_w -q_w,b);
- glColor4f(1,1,1,1);
- glTexCoord2f(1,1); glVertex3f(x*q_w , y*q_w ,b);
- glColor4f(1,1,1,0);
- glTexCoord2f(1,0); glVertex3f(x*q_w -q_w, y*q_w ,b);
- pf := pf + 1;
- end;
- end;
- if map[x-1,y] <> map[x,y] then
- begin
- if (Frustum.IsPointWithin(x*q_w -q_w, y*q_w ,b)) or (Frustum.IsPointWithin(x*q_w , y*q_w ,b)) or (Frustum.IsPointWithin(x*q_w , y*q_w +q_w,b)) or (Frustum.IsPointWithin(x*q_w -q_w, y*q_w +q_w,b)) then
- begin
- glColor4f(1,1,1,0);
- glTexCoord2f(0,0); glVertex3f(x*q_w -q_w, y*q_w ,b); // Quad links
- glColor4f(1,1,1,1);
- glTexCoord2f(0,1); glVertex3f(x*q_w , y*q_w ,b);
- glTexCoord2f(1,1); glVertex3f(x*q_w , y*q_w +q_w,b);
- glColor4f(1,1,1,0);
- glTexCoord2f(1,0); glVertex3f(x*q_w -q_w, y*q_w +q_w,b);
- pf := pf + 1;
- end;
- end;
- if map[x-1,y+1] <> map[x,y] then
- begin
- if (Frustum.IsPointWithin(x*q_w -q_w, y*q_w +q_w,b)) or (Frustum.IsPointWithin(x*q_w , y*q_w +q_w,b)) or (Frustum.IsPointWithin(x*q_w , y*q_w +(2*q_w),b)) or (Frustum.IsPointWithin(x*q_w -q_w, y*q_w +(2*q_w),b)) then
- begin
- glColor4f(1,1,1,0);
- glTexCoord2f(0,0); glVertex3f(x*q_w -q_w, y*q_w +q_w,b); // Quad links oben
- glColor4f(1,1,1,1);
- glTexCoord2f(0,1); glVertex3f(x*q_w , y*q_w +q_w,b);
- glColor4f(1,1,1,0);
- glTexCoord2f(1,1); glVertex3f(x*q_w , y*q_w +(2*q_w),b);
- glTexCoord2f(1,0); glVertex3f(x*q_w -q_w, y*q_w +(2*q_w),b);
- pf := pf + 1;
- end;
- end;
- if map[x+1,y-1] <> map[x,y] then
- begin
- if (Frustum.IsPointWithin(x*q_w -q_w+(2*q_w), y*q_w -q_w,b)) or (Frustum.IsPointWithin(x*q_w +(2*q_w), y*q_w -q_w,b)) or (Frustum.IsPointWithin(x*q_w +(2*q_w), y*q_w ,b)) or (Frustum.IsPointWithin(x*q_w -q_w+(2*q_w), y*q_w ,b)) then
- begin
- glColor4f(1,1,1,0);
- glTexCoord2f(0,0); glVertex3f(x*q_w -q_w+(2*q_w), y*q_w -q_w,b); // Quad rechts unten
- glTexCoord2f(0,1); glVertex3f(x*q_w +(2*q_w), y*q_w -q_w,b);
- glTexCoord2f(1,1); glVertex3f(x*q_w +(2*q_w), y*q_w ,b);
- glColor4f(1,1,1,1);
- glTexCoord2f(1,0); glVertex3f(x*q_w -q_w+(2*q_w), y*q_w ,b);
- pf := pf + 1;
- end;
- end;
- if map[x+1,y] <> map[x,y] then
- begin
- if (Frustum.IsPointWithin(x*q_w -q_w+(2*q_w), y*q_w ,b)) or (Frustum.IsPointWithin(x*q_w +(2*q_w), y*q_w ,b)) or (Frustum.IsPointWithin(x*q_w +(2*q_w), y*q_w +q_w,b)) or (Frustum.IsPointWithin(x*q_w -q_w+(2*q_w), y*q_w +q_w,b)) then
- begin
- glColor4f(1,1,1,1);
- glTexCoord2f(0,0); glVertex3f(x*q_w -q_w+(2*q_w), y*q_w ,b); // Quad rechts
- glColor4f(1,1,1,0);
- glTexCoord2f(0,1); glVertex3f(x*q_w +(2*q_w), y*q_w ,b);
- glTexCoord2f(1,1); glVertex3f(x*q_w +(2*q_w), y*q_w +q_w,b);
- glColor4f(1,1,1,1);
- glTexCoord2f(1,0); glVertex3f(x*q_w -q_w+(2*q_w), y*q_w +q_w,b);
- pf := pf + 1;
- end;
- end;
- if map[x+1,y+1] <> map[x,y] then
- begin
- if (Frustum.IsPointWithin(x*q_w -q_w+(2*q_w), y*q_w +q_w,b)) or (Frustum.IsPointWithin(x*q_w +(2*q_w), y*q_w +q_w,b)) or (Frustum.IsPointWithin(x*q_w +(2*q_w), y*q_w +(2*q_w),b)) or (Frustum.IsPointWithin(x*q_w -q_w+(2*q_w), y*q_w +(2*q_w),b)) then
- begin
- glColor4f(1,1,1,1);
- glTexCoord2f(0,0); glVertex3f(x*q_w -q_w+(2*q_w), y*q_w +q_w,b); // Quad rechts oben
- glColor4f(1,1,1,0);
- glTexCoord2f(0,1); glVertex3f(x*q_w +(2*q_w), y*q_w +q_w,b);
- glTexCoord2f(1,1); glVertex3f(x*q_w +(2*q_w), y*q_w +(2*q_w),b);
- glTexCoord2f(1,0); glVertex3f(x*q_w -q_w+(2*q_w), y*q_w +(2*q_w),b);
- pf := pf + 1;
- end;
- end;
- if map[x,y+1] <> map[x,y] then
- begin
- if (Frustum.IsPointWithin(x*q_w , y*q_w +q_w,b)) or (Frustum.IsPointWithin(x*q_w +q_w, y*q_w +q_w,b)) or (Frustum.IsPointWithin(x*q_w +q_w, y*q_w +(2*q_w),b)) or (Frustum.IsPointWithin(x*q_w , y*q_w +(2*q_w),b)) then
- begin
- glColor4f(1,1,1,1);
- glTexCoord2f(0,0); glVertex3f(x*q_w , y*q_w +q_w,b); // Quad oben
- glTexCoord2f(0,1); glVertex3f(x*q_w +q_w, y*q_w +q_w,b);
- glColor4f(1,1,1,0);
- glTexCoord2f(1,1); glVertex3f(x*q_w +q_w, y*q_w +(2*q_w),b);
- glTexCoord2f(1,0); glVertex3f(x*q_w , y*q_w +(2*q_w),b);
- pf := pf + 1;
- end;
- end;
- if (Frustum.IsPointWithin(x*q_w , y*q_w +q_w-(2*q_w),b)) or (Frustum.IsPointWithin(x*q_w +q_w, y*q_w +q_w-(2*q_w),b)) or (Frustum.IsPointWithin(x*q_w +q_w, y*q_w +(2*q_w)-(2*q_w),b)) or (Frustum.IsPointWithin(x*q_w , y*q_w +(2*q_w)-(2*q_w),b)) then
- begin
- glColor4f(1,1,1,0);
- glTexCoord2f(0,0); glVertex3f(x*q_w , y*q_w +q_w-(2*q_w),b); // Quad unten
- glTexCoord2f(0,1); glVertex3f(x*q_w +q_w, y*q_w +q_w-(2*q_w),b);
- glColor4f(1,1,1,1);
- glTexCoord2f(1,1); glVertex3f(x*q_w +q_w, y*q_w +(2*q_w)-(2*q_w),b);
- glTexCoord2f(1,0); glVertex3f(x*q_w , y*q_w +(2*q_w)-(2*q_w),b);
- glEnd;
- pf := pf + 1;
- end;
- end;
- end;
- glEnd;