Theoretisch denkbar wäre teilweise ein "OpenGL3.3 -> 2" oder "OpenGL3.3 -> Dx"-Wrapper. Meines Wissens existiert so etwas aber nicht. Mit Mesa3D gibt es einen Softwarerenderer der gerade auf den Stand von OpenGL 3.3 angekommen ist. Leider ist dieser nicht für Windows vorgesehen. Zumindestens wüste ich nicht wie.
Ich denke mir, wenn du jetzt Software entwickelst. Bis zur ersten Vollständigen Veröffentlichung vergeht ja noch Zeit, bis dahin wird die Verbreitung noch steigen. Und in bestimmten Zielgruppen ist auch der Anteil jetzt schon sehr hoch.
Mesa3d, war dies nicht früher die einzige Schnittstelle für Linux und OpenGL ?
Ich gerade die Shader-Dateien ein bisschen abgeändert, somit ist mein Code auf einer bisschen älteren Kiste gelaufen. Ich hoffe ich schränke mich dabei nicht zuviel ein.
Code:
#version 330
#version 130 // durch dies ersetzt
Ich will im Still dieser Animation, diese auf das neue OpenGL portieren. Nur das Problem in vielen Firmen stehen alte PCs rum, ohne Treiber Update, etc.
Für diese Programme habe ich noch den Quellcode, aber Delphi bringt ich nicht mehr zum laufen, wieso auch immer. Nicht zu stark als Eigenwerbung betrachten. Download Animation
Damit schränkst du dich in so fern ein, als das du offiziell nicht mehr OpenGL 3.x Features verwenden kannst. Dinge wie "out" und "in" sollte ein OpenGL 2 Shadercompiler trotzdem bemängeln.
Ja, es gibt natürlich so alte Rechner. Aber es werden weniger und wenn man altes und neues OpenGL unterstützen will, hat man ungefähr doppelten Aufwand, nur dafür das der halbe Code demnächst total überflüssig und wahrscheinlich in der Praxis die wenigsten selber einen so alten Rechner haben und deine Anwendung starten wollen.
Wenn du runterscrollst, gibt es einen Abschnitt "Older OpenGL and GLX Specifications and Reference Pages". Dort sind die offiziellen Spezifikationen aufgelistet. Für OpenGL 3.3 also "OpenGL Shading Language 3.30.6 Specification". Irgendwo gibt es da auch PDFs, in denen die Unterschiede zu älteren Versionen kenntlich gemacht sind. Leider finde ich die jetzt nicht wieder. In meinem Browserverlauf habe ich jedoch noch dieses Dokument gefunden, welches die Unterschiede zwischen #version 330 und #version 150 kenntlich macht.
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Access Violation kann z.B. auftreten, wenn du OpenGL-Funktionen verwendest, die von der OpenGL-Version auf dem System nicht unterstützt werden.
grüße
_________________ 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 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Allerdings müsste dir eigentlich schon beim Erstellen des OpenGL-Kontextes auffallen, wenn dies schiefgeht. OpenGL3-Kontexte lassen sich nämlich nur auf Maschinen erstellen, die entsprechende Treiber installiert haben. Das wäre ein Anlass, um deine Fehlerbehandlung zu überprüfen. Bei der Nutzung von Extensions ist es sowieso selbstverständlich, dass man zunächst deren Verfügbarkeit prüft.
Edit hat einen Rechtschreibfehler behoben.
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Zuletzt geändert von glAwesome am Do Jan 16, 2014 18:45, insgesamt 1-mal geändert.
Ich vermute eher Zugriff auf nicht existierende Funktionen. Die OpenGL-Funktionen sind intern Funktionszeiger in eine externe Bibliothek. Wenn eine Funktion nicht existiert, bleibt dem OpenGL-Loader nichts anderes übrig, als den Funktionszeiger einfach auf 0 zu setzen. Beim Zugriff auf den Zeiger, wird versucht an Position 0 zu springen, was natürlich scheitert. Dann gibt es die Meldung, dass du auf Speicher zugegriffen hast, der dir nicht zusteht.
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Ja, aber man sollte sich darauf verlassen können, dass alle Core-Funktionen zur Verfügung stehen, wenn die Erstellung des Kontextes erfolgreich war, oder nicht?
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Ich glaube nicht, dass er einen "Core"-Context erstellt. Auch wenn ich das schon mehrfach empfohlen habe. Bei niedrigeren Versionen stehen auch weniger Funktionen bereit.
Allerdings müsste dir eigentlich schon beim Erstellen des OpenGL-Kontextes auffallen, wenn dies schiefgeht. OpenGL3-Kontexte lassen sich nämlich nur auf Maschinen erstellen, die entsprechende Treiber installiert haben. Das wäre ein Anlass, um deine Fehlerbehandlung zu überprüfen. Bei der Nutzung von Extensions ist es sowieso selbstverständlich, dass zunächste deren Verfügbarkeit prüft.
Wie erstelle ich solch einen Kontext für OpenGL 3.3 ?
Ich habe jetzt wenigsten mal eine Abfrage der OpenGl Version.
Mitglieder in diesem Forum: 0 Mitglieder und 11 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.