1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134:
| procedure DrawScene; const ambient : array[0..3] of GLFloat=(0.3,0.3,0.3,1); position1 : array[0..3] of GLFloat=(0.0,0.2,1.0,1); position2 : array[0..3] of GLFloat=(0.0,-0.2,1.0,1); direction1 : array[0..2] of GLFLoat=(0.0,0.0,-1.0); direction2 : array[0..2] of GLFLoat=(0.0,0.0,1.0); MatAMbient : array[0..3] of GLFloat=(0.0,0.2,0.6,1.0); MatEmission : array[0..3] of GLFloat=(0.3,0.3,0.9,1.0);
var lauf1 : integer; lauf2 : integer; lauf3 : integer; lauf4 : integer; lauf5 : integer; lauf6 : integer; lauf7 : integer; lauf8 : integer; lwd : array[0..1] of glfloat; wdt : glfloat; step : glfloat;
begin
texture1 := auxDIBImageLoadA('granit.bmp'); if not Assigned( texture1 ) then begin MessageBox(0,'Texturenpfad oder Dateiname falsch!'+#13+' Bitte den Pfad überprüfen!','Fehler beim Laden der Textur!',MB_OK or MB_ICONERROR); end; glGenTextures(1, tex); glBindTexture(GL_TEXTURE_2D, tex); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 3, texture1^.sizeX, texture1^.sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, texture1^.data); glbindtexture(GL_Texture_2D,tex);
glviewport(0,0,ebene.width,Ebene.height); glClearColor(0.6,0.6,0.6,1); glclear(GL_color_buffer_bit or gl_depth_buffer_bit); glenable(gl_texture); glMatrixMode(GL_PROJECTION);
glEnable(GL_LIGHTING); glLightModelfv(GL_LIGHT_MODEL_AMBIENT,@Ambient); glLightModelf(GL_LIGHT_MODEL_TWO_SIDE,1.0); glLightModelf(GL_LIGHT_MODEL_LOCAL_VIEWER,1.0);
glMaterialfv(GL_FRONT, GL_AMBIENT, @MatAmbient); glMaterialfv(GL_FRONT, GL_EMISSION,@MatEmission); glMaterialf(GL_FRONT, GL_SHININESS, 50); glEnable(GL_LIGHT0); glEnable(GL_LIGHT1);
glLightfv(GL_LIGHT0,GL_AMBIENT,@Ambient); glLightfv(GL_LIGHT0,GL_POSITION,@Position1); glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,@Direction1); glLightf(GL_LIGHT0,GL_SPOT_CUTOFF,90); glLightf(GL_LIGHT0,GL_SPOT_EXPONENT,10);
glLightfv(GL_LIGHT1,GL_AMBIENT,@Ambient); glLightfv(GL_LIGHT1,GL_POSITION,@Position2); glLightfv(GL_LIGHT1,GL_SPOT_DIRECTION,@Direction2); glLightf(GL_LIGHT1,GL_SPOT_CUTOFF,90); glLightf(GL_LIGHT1,GL_SPOT_EXPONENT,10);
glgetfloatv(gl_line_width_range,@lwd); glgetfloatv(gl_line_width_granularity,@step); gllinewidth(lwd[1]/4);
glbegin(gl_line_strip); glcolor3f(1,1,1); glvertex3f(0,-0.2,0); glvertex3f(0,0.2,0); glend;
glbegin(gl_line_strip); glcolor3f(1,1,1); glvertex3f(-0.2,0,0); glvertex3f(0.2,0,0); glend;
glbegin(gl_line_strip); glcolor3f(1,1,1); glvertex3f(0,0,-0.2); glvertex3f(0,0,0.2); glend;
glbegin(gl_triangle_strip); glTexCoord2f(0,0);glvertex3f(d3x[1],d3y[1],d3z[1]); lauf7:=0; lauf8:=BLINDEX[2];
for lauf1:=1 to BLMAX-1 do begin lauf3:=BLINDEX[lauf1]; lauf4:=BLINDEX[lauf1+1]; lauf5:=1; lauf6:=0; for lauf2:=2 to max(BLINDEX[lauf1],BLINDEX[lauf1+1]) do begin lauf5:=lauf5+1; if lauf5>lauf3 then lauf5:=lauf3;
lauf6:=lauf6+1; if lauf6>lauf4 then lauf6:=lauf4;
gltexcoord(0/0);glvertex3f(d3x[lauf7+lauf5],d3y[lauf7+lauf5],d3z[lauf7+lauf5]); gltexcoord(1/1);glvertex3f(d3x[lauf8+lauf6],d3y[lauf8+lauf6],d3z[lauf8+lauf6]); end; glend;
/// LINIEN ZEICHNEN START glbegin(gl_line_strip); gllinewidth(lwd[1]/2); glcolor3f(1.0,0.0,0.0); glvertex3f(d3x[lauf7+1],d3y[lauf7+1],d3z[lauf7+1]); glvertex3f(ax[lauf7+1],ay[lauf7+1],d3z[lauf7+1]); glcolor3f(0.5,0.5,0.0); glvertex3f(E3X[lauf8],E3Y[lauf8],E3Z[lauf8]); glend; /// LINIEN ZEICHNEN ENDE
glbegin(gl_triangle_strip); lauf8:=lauf8+BLINDEX[lauf1+1]; lauf7:=lauf7+BLINDEX[lauf1]; glTexCoord2f(0,0);glvertex3f(d3x[lauf7+1],d3y[lauf7+1],d3z[lauf7+1]); end; glend;
swapbuffers(DC);
end; //******************************************************************* |