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

Aktuelle Zeit: Mo Jul 14, 2025 22:15

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Quad zeichnen (Vertex)
BeitragVerfasst: Mi Aug 13, 2003 15:42 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
Bevor ich mir auf Sulaco den Quake 3 Loader ziehe wollte ich mich mal über einige Sachen informieren.

Als erstes kommt das zeichnen eines Quads. Wenn ich ein Quad zeichnen möchte wie hier.
http://hometown.aol.de/DelphiPic/Info/Quad1.jpg
Brauche ich ja vier Positionen also
Code:
  1.  
  2. Type
  3.   TVertex = record
  4.     X,y,z : TGLFloat;
  5.   End ;
  6.  
  7. Var
  8.   TestArray : array[0..3] of TVertex;
  9.  

Aber wie zeichne ich die jetzt und lege eine Textur drüber.
Damit es ungefähr so aussieht
http://hometown.aol.de/DelphiPic/Info/Quad2.jpg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 13, 2003 15:50 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Zu einem Vertex gehört in Normalfall auch eine Texturkoordinate, also solltest du dein Vertex so aufbauen (den Typ Record soll man nicht mehr verwenden):
Code:
  1. type
  2.  TVertex = object
  3.    Position : array[0..2] of TGLFloat;
  4.    TexCoord : array[0..1] of TGLFloat;
  5.   end;


Dann kannst du in deinem Quellcode nämlich ganz einfach folgendes machen :
Code:
  1. glTexCoord2fv(@Vertex[i].TexCoord);
  2. glVertex3fv(@Vertex[i].Position);


Die Texturkoordinaten holst du dir im allgemeinen dann aus deinem Mapformat (im Q3-Map-Format werden übrigens keine Quads gespeichert, da Quads kein nativer Primitiventyp sind) oder errechnest diese mittels planarem Mapping selbst.

Allerdings weiss ich ehrlich gesagt gar nicht wo dein Problem liegt, denn immerhin weisst du doch wie man ein Quad texturiert...wenn nicht, dann wäre es ne denkbar schlechte Idee eine Engine proggen zu wollen!

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 13, 2003 15:59 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 08, 2003 15:49
Beiträge: 266
Wohnort: Aachen
Ich hatte mir das schwieriger vorgestellt. Habe da wohl irgendwas durcheinander gebracht.
Dachte man müsste die Vertexes (keine Ahnung wie die Mehrzahl heißt) irgendwie verbinden (in einer for schleife einzelne Punkte verbinden und dann ein Textur drüber legen).

Und was ist ein Face. Meines wissens ist das doch ein Dreieck. Für was werden diese den gebraucht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Aug 13, 2003 16:20 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
@Vertexe :
Die muss man nicht verbinden, aber in einer richtigen Reihenfolge zeichnen...mehr dazu gibts im Redbook.

@Face :
Ein Face ist ein Array mit Indizes auf die zu ihm gehörenden Vertexe.Faces haben den Vorteil, das man durch ihre Nutzung bei Objekten die sich viele Vertexe teilen jede Menge an Speicherplatz spart.
Bei einem normalen Dreieck würde man ja drei Vertexe speicher, und wenn dann mehrere Dreiecke gleiche Vertexpositionen hätten, würde man recht viel Speicher brauchen.Bei Faces werden halt nur die Indizes der genutzten Vertexe abgelegt, und die Vertexe selbst werden in nem Vertexarray abgelegt in dem es keine doppelten Vertexe gibt.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Aug 14, 2003 06:42 
Offline
DGL Member

Registriert: Mo Jan 20, 2003 20:10
Beiträge: 424
Wohnort: nähe Starnberg
@SoS

Leider Off-Topic:

Zitat:
(den Typ Record soll man nicht mehr verwenden)


Sorry, muss Dir wiedersprechen. Records sind immer noch eine nützliche Möglichkeit, Datenstruckturen zu verwalten und sollten immer da verwendet werden, wo ein Kapselung von Daten unnötig ist.

Dagegen sagt die Delphi - Hilfe zu object:
Zitat:
Objekttypen werden nur aus Gründen der Abwärtskompatibilität unterstützt und sollten in neuen Anwendungen nicht mehr verwendet werden.


Gruß
KidPaddle

_________________
http://www.seban.de


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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.009s | 15 Queries | GZIP : On ]