Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Jul 15, 2025 06:00

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 12, 2003 15:06 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

kann mir mal wer sagen was hierdran falsch is???
Ich möchte ein großes Quad aus vielen kleinen Quads zusammensetzen... aber irgendwie klappt das nich so ganz :(

Kann ich evtl einen VertexArray nicht so definieren??
Array of Array[1..4] of Array[0..2] of Single;

Code:
  1. type
  2.   TVertexArray = Record
  3.     Vertex: Array of Array[1..4] of Array[0..2] of Single;
  4.     Normals: Array of Array[1..4] of Array[0..2] of Single;
  5.     TexCoord: Array of Array[1..4] of Array[0..1] of Single;
  6.     Matrix: TMatrix;
  7.     Typ: Cardinal;
  8.   end;
  9.  
  10. procedure CreateField;
  11. var
  12.   F, x, y, i: Integer;
  13.   XCen, ZCen, XDiv, ZDiv: Single;
  14. begin
  15.   XDiv:=FWidth / FDivisions;
  16.   ZDiv:=FHeight / FDivisions;
  17.   XCen:=FX - (FWidth / 2);
  18.   ZCen:=FZ - (FHeight / 2);
  19.   SetLength(FVertexArray.Vertex,FDivisions * FDivisions);
  20.   SetLength(FVertexArray.Normals,FDivisions * FDivisions);
  21.   SetLength(FVertexArray.TexCoord,FDivisions * FDivisions);
  22.   for x:=1 to FDivisions do begin
  23.     for y:=1 to FDivisions do begin
  24.       F:=((x-1) * FDivisions) + y - 1;
  25.       for i:=1 to 4 do begin
  26.         case i of
  27.           1: begin
  28.                FVertexArray.Vertex[F,i,0]:=XCen + (x * XDiv);
  29.                FVertexArray.Vertex[F,i,1]:=FY;
  30.                FVertexArray.Vertex[F,i,2]:=ZCen + (y * ZDiv);
  31.              end;
  32.           2: begin
  33.                FVertexArray.Vertex[F,i,0]:=XCen + (x * XDiv) + XDiv;
  34.                FVertexArray.Vertex[F,i,1]:=FY;
  35.                FVertexArray.Vertex[F,i,2]:=ZCen + (y * ZDiv);
  36.              end;
  37.           3: begin
  38.                FVertexArray.Vertex[F,i,0]:=XCen + (x * XDiv) + XDiv;
  39.                FVertexArray.Vertex[F,i,1]:=FY;
  40.                FVertexArray.Vertex[F,i,2]:=ZCen + (y * ZDiv) + ZDiv;
  41.              end;
  42.           4: begin
  43.                FVertexArray.Vertex[F,i,0]:=XCen + (x * XDiv);
  44.                FVertexArray.Vertex[F,i,1]:=FY;
  45.                FVertexArray.Vertex[F,i,2]:=ZCen + (y * ZDiv) + ZDiv;
  46.              end;
  47.         end;
  48.         FVertexArray.Normals[F,i,0]:=0;
  49.         FVertexArray.Normals[F,i,1]:=1;
  50.         FVertexArray.Normals[F,i,2]:=0;
  51.         FVertexArray.TexCoord[F,i,0]:=0;
  52.         FVertexArray.TexCoord[F,i,1]:=0;
  53.       end;
  54.     end;
  55.   end;
  56.   FVertexArray.Typ:=GL_QUADS;
  57. end;
  58.  
  59. procedure Draw;
  60. begin
  61.   glPushMatrix;
  62.     glVertexPointer(3,GL_FLOAT,12,FVertexArray.Vertex);
  63.     glTexCoordPointer(2,GL_FLOAT,8,FVertexArray.TexCoord);
  64.     glNormalPointer(GL_FLOAT,12,FVertexArray.Normals);
  65.     glEnableClientState(GL_VERTEX_ARRAY);
  66.     glEnableClientState(GL_TEXTURE_COORD_ARRAY);
  67.     glEnableClientState(GL_NORMAL_ARRAY);
  68.     glDrawArrays(FVertexArray.Typ,0,Length(FVertexArray.Vertex));
  69.   glPopMatrix;
  70. end;


FX, FY und FZ sind der mittelpunkt der fläche die gebildet werden soll.
FWidht, FHeight ist die Höhe/Breite
FDivisions ist die anzahl der Quads die in dem großen Quad sein sollen.

Hilfe..

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Jul 12, 2003 15:11 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Ahh...
hatte in der Zeile nen fehler:
Code:
  1. glDrawArrays(FVertexArray.Typ,0,Length(FVertexArray.Vertex));


das muß so:
Code:
  1. glDrawArrays(FVertexArray.Typ,0,Length(FVertexArray.Vertex) * 4);


*boing*

Au'revoir,
Aya~


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]