Registriert: Mi Aug 13, 2008 12:39 Beiträge: 26 Wohnort: Berlin
Hallo,
ich habe mal wieder ein Problem (wie sollte es auch anders sein). Ich erstelle zwei quads im Perspective Mode ... soweit so gut, alles schön in Farbe so wie es sein soll. Doch wenn ich anschließend in den glortho Modus wechsel und ein weiteres Quad zeichne, dann ist alles schwarz und ich kann den Fehler einfach nicht finden. also büdde helft mir. ich hänge das Projekt'chen mal einfach an
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich würde dir gerne helfen, aber ich habe hier im Moment kein Winrar zur verfügung. Es wäre klasse, wenn du einfach mal deinen Code um glOrtho und den Code für deine Quads posten würdest. Das sollte ja nicht allzu viel sein und wahrscheinlich liegt in einem der beiden Bereiche auch der Fehler.
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich bin mir gerade nicht sicher, ob das beabsichtigt ist, aber bei dir ist bottom = 0 und top = ClientHeight. Eventuell solltest du das umdrehen (3. und 4. Parameter von glOrtho).
Was aber auch Probleme machen kann ist, dass deine NearClippingPlane beim Ortho auf 0 liegt, dein Quad aber auch. Für solche Fälle (vorallem, da glVertex2f die Z-Koordinate als 0 annimmt) habe ich beim Orthomodus bei der NearClippingPlane immer eine negative Zahl stehen (meistens ein Bereich von -10 bis 10).
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Mi Aug 13, 2008 12:39 Beiträge: 26 Wohnort: Berlin
vielen Dank für die Hilfe, aber es das Problem ist immernoch da. Das mit den Parametern dürfte glaube ich stimmen, wenn ich die Parameter umdrehe, dann wird mein Ortho Quad garnicht mehr gezeichnet. Ich habe die NearClippingPlane auf -10 gesetzt, aber auch das hat nichts geändert.
Ich habe das Problem jetzt zum Teil gelöst, ich habe als zum schluss (vor dem buffer swap) noch mal glcolor3f(1,1,1,); hingesetzt. Nun sind die Quads, die im Perspective Modus gerendert werden wieder in Farbe (warum auch immer ???). Nur das Quad im Ortho Modus bleibt schwarz
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Ah ok, dann habe ich dich eingangs falsch verstanden, ich dachte, nur das Quad im Ortho wäre nicht zu sehen.
Dass dein Perspective Quad dadurch sichtbar wird, ist logisch. Nach dem letzten aufruf von glColor sind die farben auf (0,0,0) gesetzt. Der Farbwert wird aber mit der Texturfarbe multipliziert, daher kam es zu dem unsichtbaren (resp. schwarzen) Quad.
Dass dein Ortho-quad nicht zu sehen ist, kann auch an der Reihenfolge der Punkte, die du angegeben hast liegen. Eventuell pfuscht dir hier das Backfaceculling rein. Probier mal, deine Reihenfolge umzudrehen oder schalt mal testweise das Backfaceculling aus (glDisable(GL_CULL_FACE); ).
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Mi Aug 13, 2008 12:39 Beiträge: 26 Wohnort: Berlin
Soooo ich konnte das Problem jetzt endlich lösen ( ich habe nun 2 Tage davor gesessen ). Der Fehler lag einerseits darin ( wie oben geschrieben ) das ich am Ende noch ein glcolor3f( 1, 1, 1); ransetzten musste. Der andere Fehler lag daran, dass ich vergessen hatte die Textur zu unbinden, deshalb war das Quad im Ortho Modus auch schwarz. Ich hänge einfach mal die korrigierte Version ran, damit leute mit dem selben Problem die Lösung finden können.
Code:
procedure TForm1.Render;
var x,y:integer;
begin
x:= ClientWidth;
y:= ClientHeight;
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
Registriert: Fr Jan 04, 2008 21:29 Beiträge: 419 Wohnort: Lübeck
also um es komplett richtig zu machen müsste das letzte glColor eigentlich vor das erste glBegin in dem perspective teil, da du ja die Farbe für dieses Quad haben willst.
Wenn du es am Ende setzt ist die information in diesem Render durchgang gesetzt, macht sich allerdings erst beim nächsten Quad bemerkbar, was bei dir ja erst im
nächsten render stattfindet. Würdest du also nur ein einziges mal deine render prozedur ausführen würdest du wieder nichts sehen, erst beim zweiten aufruf werden deine texturierten quads sichtbar sichtbar durch das setzen der Farbe im letzten render.
Allgemein setz ich immer am Anfang nach dem einstellen der perspektive glcolor auf weiß, um quasi die farbe zu "reseten".
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Das kann ich so nicht ganz unterstützen. Standardmäßig steht glColor auf 1, 1, 1. Somit wird auch bei einmaligem Aufrufen das Quad sichtbar sein, denn anfangs steht glColor ja schon auf weiß.
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Mitglieder in diesem Forum: 0 Mitglieder und 4 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.