1) Texturen & Tuts...
Ich lese gerade das Tutorial zu den Texturen durch. Und so richtig glücklich werde ich damit nicht. Da gibt es eine Variable tex die verwendet wird, aber es wird nicht gezeigt wie man sie einzurichten hat. Nun stehe ich da mit meinem Latein ... Ok, das habe ich noch gefunden in der Demo ...
Dann muss es heißen: glGenTextures(1, @tex); und nicht wie im Tut geschrieben glGenTextures(1, tex); ...
So und wenn ich das nun rennen lasse so wie ich meine das es funzen könnte, dann werden selbst meine Striche mit der Textur überzogen. Und ich kann aus dem Tut auch nicht erkennen wie ich diese Texttur un an ein bestimmtes Objekt binde.
Vielleicht generell mal eine Anmerkung zu den Tuts ... Ich finde es extrem schwierig, zu erkennen in welcher Reihenfolge ich welchen Befehl aufrufen muss (und das scheint ja schon eine wichtige Sache zu sein). Deswegen habe ich auch bei meinen ersten Versuchen nicht wirklich brauchbare Ergebnisse bekommen.
Und jetzt bei den Texturen steht man als Anfänger auch irgendwie im Wald. Ich weiss zwar vom Prinzip wie es gehen soll, aber mir ist schleierhaft, wie ich das nun in meine Anwendung einbauen muss. Nun könnte ich mir die Demo ansehen und nutzen, aber da wäre der Lerneffekt nicht so doll.
Also wenn ihr wirklich die Tuts nochmal umschreibt oder erweitern wollt, dann würde ich das evtl. so machen, das man nach den Tuts wirklich weiss was wo wann und wieso hingehört. Weil mit den jetzigen Tuts verstehe ich nur die Technik, aber nicht immer unbedingt das praktische "Doing". (Geht zumindest mir so ...)
2) die Sache mit der Mausabfrage ...
Ich hatte da so eine Idee bezüglich der Mausabfrage. Und zwar kann ich ja die drei Maustasten abfragen. Damit könnte ich ja prinzipiell sagen wir mal 4 Zustände erreichen.
- linke Maustaste
- rechte Maustaste
- linke & rechte Maustaste
- mittlere Maustaste
Damit sollte ich doch prinzipiell Objektposition & -lage sowie Kameraposition & -lage einstellen können. Das ist für X und Y Position auch nicht so schwer vermute ich mal. Aber wie mache ich das mit dem Z-Wert. Die Maus liefert mir ja diese Informationen leider nicht.
Hat da jemand einen Tip wie man sowas lösen kann?
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Das Problem an dem Texturentutorials ist, dass es auch ein wenig veraltet ist. Ich würde dir aber auch einen anderen Loader als die glaux vorschlagen. Eine Übersicht über die bestehenden Loader findest du hier. Eine neuere Version von der glBitmap gibt es noch hier. Allerdings ist diese noch eine Beta Version. Liegt aber daran, dass ich noch nicht alles so testen konnte wie ich es wollte und die Freigabe ein wenig überstürzt war.
Erstellt wird die glBitmap so.
Code:
FTex := TglBitmap2D.Create;
FTex.LoadFromFile('Seifenblase.jpg');
FTex.GenTexture;
Das musst du aufrufen, wenn opengl initialisiert wurde. Und bevor du OpenGL wieder schließt solltest du FTex.Free aufrufen.
Um die Textur zu Binden musst du FTex.Bind; aufrufen. Und wenn du sie nicht mehr haben willst, dann glDisable(GL_TEXTURE_2D);. Damit wird die Texturenbenutzung in OpenGL abgestellt. Oder du benutzt eine andere Textur. Eigentlich sollte es das auch schon gewesen sein.
Zum Thema Maus. Wie wäre es, wenn du Shift oder Steuerung noch mit einfließen lässt. Das ist dann so wie eine zusätzliche Maustaste. Oder eine Kombination aus beidem.
@Lossy eX:
Danke für den Hinweis. So ich habe die Textur nun geladen. Aber wie nun weiter?
Ich möchte gerne einen Rasen in ein paar Vierecke einzeichnen. Dieses Bodengitter erzeuge ich mit folgendem Code.
Code:
FTex.Bind;
glbegin(gl_lines);
glcolor3f(0.3,0.3,0.3);
glvertex3f(-3,-1,-3);
glvertex3f(3,-1,-3);
glvertex3f(-3,-1,-3);
glvertex3f(-3,-1,3);
glvertex3f(-3,-1,3);
glvertex3f(3,-1,3);
glvertex3f(3,-1,-3);
glvertex3f(3,-1,3);
glvertex3f(2,-1,-3);
glvertex3f(2,-1,3);
glvertex3f(1,-1,-3);
glvertex3f(1,-1,3);
glvertex3f(0,-1,-3);
glvertex3f(0,-1,3);
glvertex3f(-1,-1,-3);
glvertex3f(-1,-1,3);
glvertex3f(-2,-1,-3);
glvertex3f(-2,-1,3);
glvertex3f(-3,-1,-2);
glvertex3f(3,-1,-2);
glvertex3f(-3,-1,-1);
glvertex3f(3,-1,-1);
glvertex3f(-3,-1,0);
glvertex3f(3,-1,0);
glvertex3f(-3,-1,1);
glvertex3f(3,-1,1);
glvertex3f(-3,-1,2);
glvertex3f(3,-1,2);
glend;
glDisable(GL_TEXTURE_2D);
Habe mal versucht die beiden Befehle so einzubinden, aber das scheints noch nicht zu sein ... Also wenn du mir noch kurz sagen kannst wie es nun weiter geht ....
Vielleicht hier noch meine ganze Renderroutine ...
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Habe das Thema gerade mal verschoben.
Du musst den einzelnen Koordinaten jetzt natürlich auch noch eine Texturkoordinaten verpassen sonst weiß OpenGL ja nicht welche Stelle er von der Textur nehmen soll.
Code:
glBegin(GL_QUADS);
glTexCoord2f(0,1); glVertex3f(-3,-3,0);
glTexCoord2f(1,1); glVertex3f(3,-3,0);
glTexCoord2f(1,0); glVertex3f(3,3,0);
glTexCoord2f(0,0); glVertex3f(-3,3,0);
glEnd;
Du kannst bei den Texturkoordinaten im übrigen auch einen Wert Größer als 1 angeben, dann wird sie gekachelt. Also anstelle der 1 jeweils eine 2. Dann ist sie auf einem Quad 4 Mal zu sehen. Dazu müsstest du aber vor dem GenTexture deiner Textur noch etwas aufrufen. Und war
Code:
FTex.SetTextureWrap(GL_REPEAT, GL_REPEAT);
So könntest du deinen Rasen mit wesentlich weniger Quads darstellen.
[Edit] Methode heißt natürlich SetTextureWrap und nicht SetWrap. Hmmm. Warum eigentlich nicht? Eigentlich sollte ja klar sein, dass es sich um eine Textur handelt.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Deine ausgewählte Farbe wird mit der von der Textur (einzellnen Pixel) verrechnet. Wenn du also glColor3f(1, 0, 0); gesetzt hast dann dürfte die Textur ziemlich rot sein. Also solltest du vorher weiß als Farbe setzen, wenn du die Textur so wie in der Datei haben möchtest.
Dein Gittermodel ist nicht überflüssig. Es kommt immer darauf an was du vor hast und wie es wirken soll. Die OpenGL Linien haben den Vorteil, dass sie immer die gewählte Größe haben. Also 1 Pixel oder so. Was bei einer Textur nicht immer der Fall ist. Je nachdem wie groß die Textur ist und ob sie nah an der Kamera ist oder nicht. Was aber auch wieder von Vorteil sein kann, da die Linie dann weich gezeichnet wird. Aber das sind alles Faktoren die von jeweiligen Verwendungszweck abhängen.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Die Orginalfarbe bekommst du mit glColor3f(1,1,1). Dann wird Weiß mit der Texturmultipliziert und das ergibt dann die Textur.
Wegen dem Gitter. Mal zuerst den Boden und dann das Gitter minimal über dem Boden (ohne Textur). Oder du änderst den Tiefentest zu GL_LEQUAL (siehe hier )
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3830 Wohnort: Tespe (nahe Hamburg)
Zudem findest Du zu den Tutorials unter Filez entsprechende Source Codes. Eigentlich alles, was auf Bildern zu sehen ist, sollte dort zu finden sein. Die Zuordnung ist ein wenig chaotisch, aber ... Codes sind auch da und diese sollten stets zumindest nach dem Lesen mit hinzugezogen werden.
_________________ "Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."
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.