type Single2dArray =
array of array of single;
function BuildDL(heightmap: Single2dArray; scalexy,scalez:single): integer;
var i,k,t:integer;
begin
result := glGenLists(1);
//eine DL, bitte!
glNewlist(result, GL_COMPILE);
//jetzt gehts los!
t := round((length(heightmap)
div 2) * scalexy);
gltranslatef(-t,-t,0);
// In die Mitte verschieben
glbegin(gl_triangles);
glcolor3f(255,0,0);
for i:=1
to length(heightmap)-2
do // ich greife auch auf i-1 und i+1 zu!
for k := 1
to length(heightmap[i])-2
do // ich greife auch auf k-1 und k+1 zu!
begin
//erstes dreieck
glVertex3f(i * scalexy, k * scalexy, heightmap[i,k] * scalez);
glVertex3f((i-1) * scalexy, (k) * scalexy, heightmap[i-1,k] * scalez);
glVertex3f(i * scalexy, (k+1) * scalexy, heightmap[i,k+1] * scalez);
//zweites dreieck
glVertex3f((i-1) * scalexy, k * scalexy, heightmap[i-1,k] * scalez);
glVertex3f((i-1) * scalexy, (k-1) * scalexy, heightmap[i-1,k-1] * scalez);
glVertex3f((i+1) * scalexy, (k+1) * scalexy, heightmap[i+1,k+1] * scalez);
end;
glend;
glcolor3f(255,255,255);
glEndList;
end;