Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
glView: Bei der neuen Version kann ich dir das leider nicht direkt sagen. Aber in der älteren war das "Erweiterungen" -> "Implementierte Spezifikationen" -> "Verschiedene Limitierungen" -> "Line width range 1,0000 to 63,0000"
Die Struktur müsste aber so ähnlich sein denke ich.
OpenGL Fehler: Du musst jetzt versuchen den Fehler näher einzugrenzen, da ein "Invalid Value" für zwei unterschiedliche Methoden unterschiedliche Bedeutungen hat. Also ich packe mir die Überprüfung gerne in eine Methode und rufe die Methode zwischen den OpenGL Aufrufen dann mal auf. Zu erst grob und dann an diversen Stellen dichter um den Fehler eingrenzen zu können. Das ist leider die einzige Möglichkeit wie man die OpenGL Fehler finden kann.
Wenn du dann weißt welche Methode den Fehler produziert hat musst du in die Manual der Funktion schauen und dessen Bedeutung zu erfahren. Oder bei uns ins Wiki.
Linien: Hattest du schon mal OpenGL Linien auf deinem System? Alternativ kannst du auch mal den Softwarerenderer benutzen. Also "Eigenschaften von Anzeige" > "Einstellungen" > "Erweitert" > "Problembehebung" und dann Regler hardwarebeschleunigung so weit nach links bis DirectDraw/Direct3D deaktiviert wurde. Dann benutzt du die Software implementation von Windows. Nach dem Testen aber wieder nach rechts schieben.
Registriert: Di Dez 27, 2005 12:44 Beiträge: 393 Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo Jann1k,
hmm...was mich bei deinem Quellcode noch gewundert hat :
Code:
glbegin(GL_lines);
ist nur eine dumme Vermutung, aber ich nehm mal an, du hast in deinem Programm GL_LINES groß geschrieben, sonst hätte es einen Kompilierfehler gegeben.
Viele Grüße
dj3hut1
_________________ Wenn Gauß heute lebte, wäre er ein Hacker. Peter Sarnak, Professor an der Princeton University
Registriert: Mo Sep 02, 2002 15:41 Beiträge: 867 Wohnort: nahe Stuttgart
dj3hut1 hat geschrieben:
ist nur eine dumme Vermutung, aber ich nehm mal an, du hast in deinem Programm GL_LINES groß geschrieben, sonst hätte es einen Kompilierfehler gegeben.
Sind wir nicht in good old case-insensitive Delphi?
Ich würde sagen, versuch mal genau rauszufinden, wo das invalid Value auftritt oder gib uns mehr Code/ne Exe. Nicht lokal nachvollziehbare Probleme sind per Fernberatung immer schwer auszumachen.
Eine weitere Möglichkeit wäre noch GLIntercept zu verwenden. Dessen Logs sind für gewöhnlich sehr aussagekräftig (und umfangreich).
Registriert: Di Okt 23, 2007 18:03 Beiträge: 49 Wohnort: Dortmund-Scharnhorst
Okay, kurzes Update von mir:
glView gibt mir als mögl. Linienrößen folgendes:
Line width range: 0.500000 to 10.000000
sollte also okay sein.
Der Fehler "invalid value" tritt auf, weil ich Texturen lade die nicht POT2 konform sind, ein auskommentieren der fehleraften Texturen entfernt den Fehler zwar, ändert aber nichts an der nicht vorhandenen Linie.
[quote]
Linien: Hattest du schon mal OpenGL Linien auf deinem System? Alternativ kannst du auch mal den Softwarerenderer benutzen. Also "Eigenschaften von Anzeige" > "Einstellungen" > "Erweitert" > "Problembehebung" und dann Regler hardwarebeschleunigung so weit nach links bis DirectDraw/Direct3D deaktiviert wurde. Dann benutzt du die Software implementation von Windows. Nach dem Testen aber wieder nach rechts schieben. [/quote]
Hat leider auch nichts gebracht
Ich werde jetzt den Quelltext ein bisschen umstellen, damit alles was mit OGL zu tun hat oben steht, und den Code hier reinstellen. Ic darf euch jetzt schon vor dem Code warnen, er ist ein bisschen unübersichtlich...
Und irgendwie habe ich langsam die Befürchtung, dass ich irgendetwas ganz ganz ganz kaputt gemacht hab
Okay anhängen klappt nicht 12mb scheinen zu viel zu sein, also hier mal der Teil Vom Quelltext der OGL betrifft und bis zum Zeichnen der Linie aufgerufen wird:
Registriert: Mo Sep 02, 2002 15:41 Beiträge: 867 Wohnort: nahe Stuttgart
Ich hab deinen Code mal in ein leeres Projekt übernommen. Wenn ich wie anfangs erwähnt als Z-Koordinate bei den glVertex3fs der GL_LINE_STRIP -12 statt 12 übergebe, dann sehe ich die gewünschte rote Linie auf blau, inklusive dem "allo" und dem Quad.
Von daher fällt mir auch nicht mehr viel ein, außer es auf Treiber oder Hardware zu schieben.
Registriert: Di Okt 23, 2007 18:03 Beiträge: 49 Wohnort: Dortmund-Scharnhorst
Okay, kann jetzt nicht sagen, ob ein vorheriger Tipp das Problem gelöst hätte, weil ich wohl vergessen hab die 12 wieder in -12 zu ändern. Aber mit aktualisiertem Grafikkarten-Treiber klappt es jetzt endlich.
Danke an alle, mein Tag ist gerettet.
_________________ Those who fear the dark never saw what light can do...
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Bei mir das Selbe. Ich sehe die Linie nur, wenn ich die Position in -12 verändere. Was auch vollkommen normal ist.
Und das sowohl mit Hardbeschleunigtem OpenGL als auch in der Software implementation von MS. Und die Softwareseitige Implementation sollte überall eigentlich gleich sein, da Microsoft dort seit ca 1996 nichts mehr verändert hat. Wie das in Vista aussieht weiß ich aber nicht, da dort OpenGL ja auch mal emuliert werden sollte.
Hast du schon mal andere Programme ausprobiert? Da könnte ich dir zum Beispiel meinen VU Meter anbieten. Der besteht nur aus Linien, Punkten, Bitmapfonts und 2 Quads.
In dem VU Meter zeichne ich die im übrigen so, dass ich bei glOrtho als zNear = -1 und zFar = 1 einstelle. Und alle Vertices zeichne ich mit glVertex2*. Damit ist die dritte Komponente (Z) immer 0.
Registriert: Di Okt 23, 2007 18:03 Beiträge: 49 Wohnort: Dortmund-Scharnhorst
Z war ja am Anfang auf alle Fälle auf -12, dann kam der Vorschlag das mal auf 12 zu ändern, hatte es wohl nicht rückgängig gemacht.
Die z Komponente immer auf 0 zu setzen ist zwar schön einfch, aber wie würde ich denn dann die Tiefensortierung meiner Quads vornehmen? Läuft das dann über die Reihenfolge in der man zeichnet?
Und weil das Thema ja beantwortet wurde: Gibt es hier im Forum die Mölichkeit ein Topic als "gelöst" zu markieren? konnte keine Einstellung dazu finden
_________________ Those who fear the dark never saw what light can do...
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Nö solch ein Flag gibt es im Forum nicht. Es gibt aber auch kein Flag, dass es sich dabei um eine Frage handelt.
Wenn die Tiefen gleich sind, und nicht vom Tiefentest ausgeschlossen werden, dann ist die Reihenfolge des Gezeichneten ausschlaggebend. Aber die Reihenfolge ist auch ausschlaggebend, wenn dort Transparenzen zum Einsatz kommen. Der Tiefentest sollte dann entweder auf GL_LEQUAL stehen wenn er nicht sogar deaktiviert werden kann. Wenn du die Reihenfolge sowieso beachten musst kann es sein, dass du den Tiefentest(Tiefenbuffer) gar nicht benötigst. Für 2D auch nicht unbedingt unwahrscheinlich.
PS: Was ich in deinem Code auch gesehen hatte. Du solltest bei GenTextures der Texturen kein False übergeben. Denn auf Systemen, die keine NPOT Texturen können aber solche Texturen benutzt werden, bleiben diese ohne Kommentar einfach weiß. Das würde man dann nur merken, wenn man OpenGL Fehler erfragt. Wenn der Parameter True oder leer ist, dann würdest du eine Exception bekommen, wenn solche Texturen nicht unterstützt würden.
PPS: Alphatest und Blending solltest du meiner Meinung nach nur dann aktivieren, wenn du sie auch wirklich brauchst. Bzw in manchen Fällen kann die Kombination (Alphatest und Blending) auch zu unschönen Effekten führen.
Registriert: Di Okt 23, 2007 18:03 Beiträge: 49 Wohnort: Dortmund-Scharnhorst
Zitat:
Du solltest bei GenTextures der Texturen kein False übergeben. Denn auf Systemen, die keine NPOT Texturen können aber solche Texturen benutzt werden, bleiben diese ohne Kommentar einfach weiß.
Ja stimmt, die fehlerhaften Texturen werden noch ausgewechselt, die stammen noch aus der vor OGL Zeit des Programms.
Danke auch für die restlichen Hinweise, den alphatest kann ich denke ich wirklich weglassen.
_________________ Those who fear the dark never saw what light can do...
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.