Hallo, ich mal wieder Ich habe das Problem, dass ich im Ortho-Mode die Reihenfolge meiner gezeichneten Quads nicht festlegen kann. Sobald ich den Quads irgendeinen andren Wert als 0 zuweise rendert er alles nurnoch schwarz. Umgangen bin ich das Problem die ganze Zeit, indem ich alles auf 0 gesetzt habe und eben in der entsprechenden Reihenfolge nach und nach gerendert habe.
Aber jetzt kam noch erschwerend hinzu, dass ich auch noch darauf achten muss, in welcher Reihenfolge ich den Code zusammensetze. So wird das UI nicht angezeigt, wenn ich es nach dem Zeichnen des Charakters zeichne (obwohl die sich überhaupt nicht überlagern).
Einzigste Ausnahme ist die Map. (Man muss sich das ganze so vorstellen: 1. Layer = unten ==> gras, wege, usw.; 2. Layer = mitte => NPCs; 3. Layer = oben => Spieler; 4. Layer = ganz oben => User-Interface). Die Map muss -1 haben, sonst wird alles was obendrüber ist, nicht gezeichnet.
Ist mal wieder so ne Sache, die ich garnicht erklären kann, weil ich nicht den Hauch einer Ahnung habe, an was es liegen könnte.
So sieht alles aus, wenn es funktioniert:
edit: bild weg
Sobald ich nun dem Spieler den NPCs den Z-Wert 1 zuweise, dem Spieler den Z-Wert 2 und dem UI den Z-Wert 3 passiert folgendes:
edit: bild weg
Hoffe ihr könnt mir helfen. Ich such nach dem Problem schon seit 4 Tagen, habs bisher immer ignoriert und eben solange in der Code-Reihenfolge rumprobiert, bis es problemlos ging. Aber langsam nervt es doch und 'ne Lösung dafür finde ich hier im Forum nicht
Gruß Spessi
Zuletzt geändert von Spessi am Mi Mär 26, 2008 22:11, insgesamt 1-mal geändert.
also, zuerst Zeichne ich den Hintergrund (die Map) bei z=0. Anschließend zeichne ich die NPCs bei z=1. Danach wird der Spieler bei z=2 und das UI bei z=3 gezeichnet.
Am Ende wird der Text gezeichnet (mit der PrintText-Funktion), die beim OpenGL1.5-Template dabei ist).
Registriert: Do Aug 25, 2005 16:00 Beiträge: 189
Programmiersprache: Java, C#
Ich würd jetzt mal so ganz spontan drauf tippen das Dinge mit Z-Wert größer als 0 nich gezeichnet werden, weil sie hinter dir sind. In dem Fall hättest du dich nicht mithilfe von glTranslatef von der Szene "weg bewegt".
Kann das sein?
edit: was mir noch grad auffällt - bei glOrtho setzt du zNear auf 0. Also ist alles kleiner als auch 0 sowieso böse, weils nich mehr gezeichnet wird...
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Spessi: Die Zeichenreihenfolge in deinem letzten Post klingt für mich schon ziemlich so wie es sein soll. Benötigst du überhaupt einen Tiefentest? Denn wenn du ohne Tiefentest zeichnest spielt nur die Reihenfolge des Zeichnens eine Rolle. Dann würde ein Translate(0, 0, -10) ausreichen um die Zeichenebene ins Sichtfeld zu schieben und beim Zeichnen wäre nur die Reihenfolge entscheidend. Bei 2D ist das aber überhaupt kein Problem.
Wenn du doch einen Tiefentest benötigst gibt es 2 Möglichkeiten. Entweder du gehst von 0 aus und zeichnest alle Objekte mit einem positiven Z Wert. Dann muss die Tiefenfunc aber GEQUAL sein. Also der ZWert muss größer oder gleich sein. Oder aber du erzeugst eine gewisse Grundtiefe (Translate(0, 0, -10)) und zeichnest die Objekte näher an die Kamera (negativer Z Wert (-1, -2 oder -3)). Dann ist der Test LEQUAL. Das Letzte ist für 3D Standard und sollte wenn dann wohl auch für 2D eher verwendet werden.
Nicht desto trotz würde ich dir empfehlen die Z Werte bei glOrtho nicht direkt bei 0 anfangen zu lassen und nicht direkt an einer Kante des Sichtbaren zu zeichnen. Also bei zNear = 1 nicht direkt bei 1 Zeichnen. Sondern eher bei 2 anfangen. Wer weiß schon was es alles für seltsame Hardware gibt. Dann genügen evlt. schon Ungenauigkeiten bei den Datentypen um deine Objekte ins Dunkel zu stürzen und ewig zu binden.
Hallo,
naja gut, hab jetzt beide Methoden von dir ausprobiert: Bild bleibt immer schwarz. Habe dann auch mal den Tiefentest komplett rausgeschmissen und alles auf z=1 gesetzt - tut sich auch nix.
Es geht NUR wenn die Map mit z=-1 gezeichnet wird (OBWOHL mein Bereich nur 0..128 ist! ) und der rest auf 1 steht und ich eine Reihenfolge einhalte (so muss das User-Interface VOR dem Charakter gezeichnet werden, sonst bleibt es schwarz.
Lossy eX: kann ich dich mal in ICQ adden? Dann könnte ich dir mal den kompletten Code schicken und du könntest 'nen Blick drüber werfen.
Dann konnte ich den einzelnen Quads die passende Z-Werte zuweisen. (Nur damit das Thema hier auch vollständig ist - vielleicht hat ja mal wer das gleiche Problem )
Mein Dank geht an Lossy eX (und auch an die anderen, die hier geantwortet haben)
Mitglieder in diesem Forum: Bing [Bot] und 7 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.