OpenGL - ein Objekt zeichnen (Quader), bäuchte Hilfe !!!!!
-
http://graphics.cs.uni-sb.de/Courses/ws9900/cg-seminar/Ausarbeitung/Philipp.Walter/images/coords-simple.gif
Ich glaube hier sieht man das ganz gut.
Du trägst die Punkte nun einfach in das Koordinatensystem ein.
-
nochmal: jeder aufruf von glVertex3f erstellt nur EINEN Punkt. Keine Fläche, keine Linie, nix anderes. OpenGL macht dann aus einer MEnge vno Punkten (zB die Eckpunkte eines Rechtecks) die passende Fläche, welche bei glBegin angegeben wird. Mit einem einzigen Aufruf von glVertex3f kannst du also auch nur einen Punkt malen und keine Fläche.
-
Man ich mach gleich was kaputt vor Wut
.
Ich check das nicht.
Kann mir mal vlt bitte einer eine richtige <Definitioen ausfühlrich schreiben ?
Ich kriegs net hin.
Alsooooo^^.
Bei dem Quadrat, also ich stell mir das so vor, aber bitte bring mich einer von meinen Vorstellungen weg :glVertex3f(-1.0f, 1.0f, 0.0f);
-Beginnt eine Linie von -1.0f nach rechts zu 1.0f zu zeichnen
glVertex3f( 1.0f, 1.0f, 0.0f);
-Fängt oben rechts an, wo die Linie vorher geendet hat, und setzt ab da eine Linie nach oben 1.0f
glVertex3f( 1.0f,-1.0f, 0.0f);
-Fängt an der ersten Zeichen Operation am 1.0f eine Linie runter zu zeichnen -1.0f
glVertex3f(-1.0f,-1.0f, 0.0f);
-Fängt an der ersten Zeichen Operation oben rechts an und zeichnet eine Lienie runterSo Leute, ihr denkt euch jetzt bestimmt "Ist der Junge bekloppt oder was ???"
UNd ja, ich bin grad voll bekloppt im Kopf.
Ich dreh gleich am Rad, ich check grad ganix mehr.
Bitte geb mir jetzt einer eine genaue Definition mit Code beispielen.
Ich verteile Küsse für antworten, dankeeee.
Wer auch mal Bock hat, mit mir bald mal ein kleines Spiel zu progge, (worauf eh keiner Bock hat), würde es mich freuen wenn ihr mich im icq Chat adden würdet, unter :
388-760-975Ich danke HERZLICHST im Vorraus !
-
glVertex3f(0, 0, 0) //Setzt den Zeichenzeiger (von mir ausgedacht :clown:) auf 0, 0, 0, (x, y, z) glVertex3f(2, 0, 0) //Setzt den Zeichenzeiger auf 2, 0, 0, (x, y, z) glVertex3f(0, 1, 0) //Setzt den Zeichenzeiger auf 0, 1, 0, (x, y, z)... usw.
Wie vorher schon gesagt wurde, jeder Aufruf von glVertex* setzt nur einen Punkt!
Eine Linie setzt sich aus 2 Punkten Zusammen. (Anfang und Ende)
Ein Quadrat aus 4 Punkten (Jede Ecke einer)
usw.Edit:
Für ein Quadrat gäbe es auch glRect*
-
Achso,
mhm aber eine Frage hätt ich da immer noch^^.
Also wenn ich ein Punkt gesetzt hab, und dann einen anderen Punkt setzte verbindet der sich dann mit dem davorigen Punkt automatisch ?Also, wenn ein Punkt1 gesetzt wird und dann Punkt 2 gesetzt wird, dass beide Punkte im GL_QUADS Befehl sofort automatisch verbunden werden ?
Danke im Voraus.
-
Ach Leute shcon gut, habs grad rausbekommen, ich hab mir das viel komplizierter vorgestellt als es eigentlich ist.
Aber trotzdem Danke !
-
Innerhalb von:
glBegin(GL_QUADS) glEnd();sucht OpenGL nach jeweils 4 Angaben von 3D Koordinaten, gegeben mit glVertex3f(...)
und interpretiert diese 4 Angaben als die 4 Ecken des 4 Ecks.Findet OpenGL z.B nur 2 3DKoordinaten mit glVertex3f(...) wird nichts gezeichnet
(auch keine Linie).
Weil um ein 4 Eck eindeutig zu bestimmen nunmal 4 Eckpunkite nötig sind.Schreibst du allerdings die Angaben von 8 3DKoordinaten mit glVertex3f(...)
dazwischen, so wirst du 2 Vierecke erhalten. Mit 12 Angaben 3 Vierecke usw.Wenn du eine Linie haben willst mußt du glBegin(GL_LINES) verwenden.
Dann sucht OpenGL innerhalb vonglBegin(GL_Lines) glEnd();nach 2 Angaben von 3DKoordinaten (wieder gegeben mit glVertex3f(...) ).
Bei nur einer Angabe wird nichts gezeichnet. Bei 2 Angaben erhälst du eine Linie. (Weil 2 Angaben reichen um eine Linie eindeutig zu bestimmen)Bei 4 Angaben wirst du 2 Linien erhalten. Bei 5 Angaben auch nur 2 Linien.
Bei 6 Angaben 3 Linien usw...
-
Ich hätte da auch mal eine Frage. Ich habe bis jetzt mit DX experementiert und überlege mir es, auf OGL umzusteigen.
glBegin(GL_QUADS) glVertex3f(0, 0, 0); ... glEnd();Entspricht das in etwa einem Dynamischen VertexBuffer in DX?
Wenn ja: Wie macht man statische Buffer?
-
Da solltest du was finden.
-
-
Ich denk mal du bist mit Open GL frisch am Werk, wie ich.
Also ich musste lange suchen um richtig gute Seiten mit Tutorials/-Erklärungen zu bekommen.
Hier meine Top Liste :www.joachimrohde.com
www.videotutorialsrock.com
http://nehe.gamedev.net
-
Und im Übrigem hab ich noch meinen 3D Würfel fertig geschrieben.
(Es ist mein erstes gelungenes 3D Objekt, worüber ich überaus stolz bin ;-))
Also hier der Code meines 3D Objektes (3D-Würfel) :int DrawGLScene(GLvoid) // Here's Where We Do All The Drawing { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); // Reset The Current Modelview Matrix glTranslatef(-2.5f,0.0f,-6.0f); glTranslatef(2.5f,0.0f,0.0f); glRotatef(rquad,10.0f,10.0f,0.0f); glBegin(GL_QUADS); //* Grün Vordere Seite glColor3f(0.0f,10.0f,0.0f); glVertex3f(-1.0f, 1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 0.0f); glVertex3f( 1.0f,-1.0f, 0.0f); glVertex3f(-1.0f,-1.0f, 0.0f); //* Rot Rechte Seite glColor3f(10.0f,0.0f,0.0f); glVertex3f(1.0f,1.0f,0.0f); glVertex3f(1.0f,1.0f,-1.8f); glVertex3f(1.0f,-1.0f,-1.8f); glVertex3f(1.0f,-1.0f,0.0f); //* Blau Linke Seite glColor3f(0.0f,0.0f,10.0f); glVertex3f(-1.0f,1.0f,0.0f); glVertex3f(-1.0f,1.0f,-1.8f); glVertex3f(-1.0f,-1.0f,-1.8f); glVertex3f(-1.0f,-1.0f,0.0f); // Gelb Hintere Seite glColor3f(10.0f,100.0f,0.0f); glVertex3f(-1.0,1.0f,-1.8f); glVertex3f(1.0f,1.0f,-1.8f); glVertex3f(1.0f,-1.0f,-1.8f); glVertex3f(-1.0f,-1.0f,-1.8f); // Hellblau Obere Seite glColor3f(0.0f,10.0f,10.0f); glVertex3f(-1.0f,1.0f,0.0f); glVertex3f(-1.0f,1.0f,-1.8f); glVertex3f(1.0f,1.0f,-1.8f); glVertex3f(1.0f,1.0f,0.0f); // Weiss Untere Seite glColor3f(10.0f,10.0f,10.0f); glVertex3f(-1.0f,-1.0f,0.0f); glVertex3f(-1.0f,-1.0f,-1.8f), glVertex3f(1.0f,-1.0f,-1.8f); glVertex3f(1.0f,-1.0f,0.0f); glEnd(); rquad-=0.55f; return TRUE; // }Und hier noch mal für die, die den kompletten Code haben möchten oder nicht die Gelegenheit dazu haben, sich den Code umzuändern oder einzufügen bzw. kompilieren, hab ich die Datei (Executable) samt den Source Code hochgeladen.
Nämlich hier :
(Der Source Code liegt im Dev-C++ Format vor)
-
Ich frag mich ganz ernsthaft, warum du glColor3f mit Werten >1.0 bestückst?
http://www.glprogramming.com/blue/ch05.html#id5458953gruß
Martin
-
Hey,
ja das liegt wohl daran das ich noh ein Noob in Sachen 3D Programmierung und
TEXTURIERUNG bin.
Aber danke für deine Bemerkung.
-
Mit Texturierung hat das noch nichts zu tun, das ist wieder ein anderes Thema.
Ich hab es auch nur erwähnt, weil ich selbst unvorhergesehenes Verhalten erlebt hab. Bei den glColorxf hast du immer floats zwischen 0.0f und 1.0f. 0 ist 0 und 1.0f würde als Byte auf 255 umgerechnet. Wenn du nur Werte zwischen 1.0f und 0.0f eingibst, kommt auch nur das raus, was du wirklich möchtest. Ist sauberer so.
gruß
Martin
-
Ja ok danke ich werds mal ausprobieren.
-
SilentRob schrieb:
Ich hätte da auch mal eine Frage. Ich habe bis jetzt mit DX experementiert und überlege mir es, auf OGL umzusteigen.
glBegin(GL_QUADS) glVertex3f(0, 0, 0); ... glEnd();Entspricht das in etwa einem Dynamischen VertexBuffer in DX?
Wenn ja: Wie macht man statische Buffer?Das ist gar kein Puffer. Du tust ja die Daten einzeln an OGL übergeben.
Wenn du Puffer willst, schau dir Vertexarrays und/oder VBOs an. Das entspricht dann eher dem Prinzip, was du aus DX kennst.
-
Du tust ja die Daten einzeln an OGL übergeben.
Ey sry, aber das konnt ich jetzt echt nicht so da stehen lassen.
Das tut in meinen Augen weh.
Also bitte benutz wenn diesen Sprachgebrauch ok ? :Du übergibst OpenGL die einzelnen Daten
Dieses "tust" ist genau so ein Sprachfehler wie "..., als wie".
Als = Unterschied.
Wie = Vergleichung.
Sieh das nicht als Böse an, aber dann lernst du es noch mal.
-
Ey sry, aber wer im Glashaus sitzt, sollte nicht mit Steinen werfen....
- "Böse" wird klein geschrieben.
pivke schrieb:
Also bitte benutz wenn diesen Sprachgebrauch ok ?
-
Es heißt mindestens" ...wenn, dann ...".
Aber dieses Satzungetüm kann und sollte noch weiter verbessert werden. -
Mir ist bei einigen deiner Beiträgen das schöne Wörtchen "i-wie" aufgefallen.
"Das tut in meinen Augen weh." Oder ist das tatsächlich eine offizielle Abkürzung für "irgendwie" ?
pivke schrieb:
Sieh das nicht als Böse an, aber dann lernst du es noch mal.
In diesem Sinne...
Blue
-
Ja ich mein jeder hat diese Fehler.
Aber wenn einem doch so ein Fehler ins Auge springt, dann darf man diesen doch eben korrigieren.
Es sollte nur ein Hinweis sein.
Mhm, ja das i-wie.
Gute frage, das schrieb ich immer i-wie ^^.
Hab ich wahrscheinlich immer abgekürzt als ich irgendetwas, oder irgendjemanden oder so gesagt hab.
Aber bitte fang jetzt nicht mit jedem kleinen Rechtschreibfehler an, an mir rum zu merkeln.
Und das was der Kollege geschreiben hat, sieht mit sicherheit auch ein das es so falsch ist.
Und er hat mit Sicherheit auch verstanden das es keine Kritik sein sollte.
Ok,danke ciao.