Direktes einlesen von Daten in Arrays

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Hartkern
Beiträge: 69
Registriert: Sa 5. Dez 2015, 20:03
OS, Lazarus, FPC: Win10 IDE 1.6
CPU-Target: 64Bit
Wohnort: Leipzig

Direktes einlesen von Daten in Arrays

Beitrag von Hartkern »

Ich versuche die Daten eines Dreiecks in einen Array einzulesen...also einem Array mehrere Werte "aufeinmal" zuweisen

Ich hab dazu folgende Typ Vereinbarungen getroffen

Code: Alles auswählen

 TVertex = Array[0..2] of Double;     //ob glFloat besser ist sei dahin gestellt.....
   TVertexArr = Array[0..2] of TVertex;   


im Private Feld dann

Code: Alles auswählen

aCube : array of TVertexArr;  


zum Einlesen der Daten folgendes

Code: Alles auswählen

setlength(aCube,AnzahlAktiveCubes);
  //prüfen ob alle Blöcke inaktiv sind..wenn ja, leeres vbo ? oder gar keins?
  if IsAllInactive = true then exit;
 
  //wenn nicht:
  //alle Blöcke prüfen ob aktiv oder inaktiv
  //Vertexe alle aktiven Blöcke bei Laufzeit berechnen und in VBO laden
    for I := 0 to 15 do        //versatz Seite +i
      begin
        for j := 0 to 15 do     //Versatz nach oben +j
            begin
              for k := 0 to 15 do //Versatz nach hinten -k
                  begin
                    If IsBlockActive(i,j,k) =true then
                    begin
 
                     //1. Dreieck L1
                     //aCube[0]:=(((-1.0+i+fposx,-1.0+j+fPosY, -1.0-k-fPosZ), (-1.0+i+fposx,-1.0+j+fPosY, 1.0-k-fPosZ), (-1.0+i+fposx,  1.0+j+fPosY, 1.0-k-fPosZ)));-----so sollte es sein
                     glVertex3f(-1.0+i+fposx,-1.0+j+fPosY,-1.0-k-fPosZ)//L1
                     glVertex3f(-1.0+i+fposx,-1.0+j+fPosY, 1.0-k-fPosZ);
                     glVertex3f(-1.0+i+fposx, 1.0+j+fPosY, 1.0-k-fPosZ);
 


Wie kann ich so einen speziell verbauten Array direkt befüllen..Ich hab versuchsweise erst jede Koordinate eines Punktes in einen eigenen Array eingelesen und diese dann wieder in einen Array des Dreiecks...
Ist aber sehr umständlich, da ich bei einen Würfel 12 Dreiecke hab und jedes 3 Koordinaten hat.... :|

Es würde sich ja der Umweg über ne eigenen Füllprocedure ergeben...
Wahrscheinlich seh ich den Wald vor lauter Bäumen nicht...

u-boot
Beiträge: 306
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Re: Direktes einlesen von Daten in Arrays

Beitrag von u-boot »

Hartkern hat geschrieben:Es würde sich ja der Umweg über ne eigenen Füllprocedure ergeben...
Wahrscheinlich seh ich den Wald vor lauter Bäumen nicht...


Meine persönliche Meinung:
Warum soll eine Procedure ein Umweg sein? Für mich macht es die Sache meist übersichtlicher.


Warum ein Würfel genau 12 Dreiecke haben soll, erschließt sich mir noch nicht. Evtl. würde ich den Würfel mit 8 Eckpunkten beschreiben. Es können aber auch 3 Eckpunkte und eine Schenkellänge reichen oder 4 Eckpunkte. Je nach Fall und sonstigen Festlegungen können aber auch weniger Eckpunkte ausreichen,
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

Hartkern
Beiträge: 69
Registriert: Sa 5. Dez 2015, 20:03
OS, Lazarus, FPC: Win10 IDE 1.6
CPU-Target: 64Bit
Wohnort: Leipzig

Re: Direktes einlesen von Daten in Arrays

Beitrag von Hartkern »

Hallo UBoot,

ich brauch den Array für ein Würfel in OpenGl,

6 Seiten des Würfels, jede Seite wird aus 2 Dreiecken zusammengepuzzelt, jedes Dreieck hat 3 Punkte, welche jeweils durch x,y,z angegeben werden..daher der Aufwand....achja pro Array sind es maximal 4096 Würfel...

u-boot
Beiträge: 306
Registriert: Do 9. Apr 2009, 10:10
OS, Lazarus, FPC: Ubuntu 9.10 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 785..

Re: Direktes einlesen von Daten in Arrays

Beitrag von u-boot »

12 Dreiecke je 3 Koordinaten.... macht 36 Koordinaten, die sich jedoch öfter wiederholen. Diese 36 Koordinaten sind eben genau die 8 Eckpunkte des Würfels. Somit müsstest du durchaus aus den 8 Koordinaten die Dreiecke erstellen lassen können. Macht ja schließlich nur die jeweils Richtige Auswahl der Eckpunkte des Würfels.
Ubuntu 9.10 (L 0.9.28 FPC 2.4.x)

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Direktes einlesen von Daten in Arrays

Beitrag von Mathias »

6 Seiten des Würfels, jede Seite wird aus 2 Dreiecken zusammengepuzzelt, jedes Dreieck hat 3 Punkte, welche jeweils durch x,y,z angegeben werden..daher der Aufwand

Ich denke er braucht dies, weil er bei den Dreiecken nicht nur die Positionen braucht, sondern auch die Normalen, evt. auch die Textur-Koordinaten.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten