Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Heiko

Frischling

  • »Heiko« ist der Autor dieses Themas

Beiträge: 19

Wohnort: @home

  • Private Nachricht senden

11

03.02.2014, 00:34

Also zum einen soll es für purebasic sein, zum anderen ist das schon möglich.
Was mich noch interessieren würde, wo finde ich denn die korrekte opengl dll welche alle aktuellen funktionen enthält.

edit: bin noch etwas schlauer geworden.
korrigiert mich wenn ich falsch liege.
man nutzt normal die opengl32.dll und kann über das getprocadress die extensions der grafikkartentreiber auslesen.
soweit so gut.

nun gibt es einen wrapper für glfw und bin mir nicht sicher ob das schon alles ist was ich fürs opengl coding brauche

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Heiko« (03.02.2014, 00:51)


12

03.02.2014, 20:24

Korrigiert mich bitte, wenn ich falsch liege aber soweit ich weiß liegt in der OpenGL32.dll lediglich Version 1.1. Alle höheren Versionen sind auf dem Grafiktreiber. Die bekommst du nicht aus der DLL. GLFW wird dir höchstwahrscheinlich auch die Funktionszeiger aus dem Treiber laden. Mit GLFW hast du alles was du brauchst, nur mit der DLL wohl eher nicht.

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

13

03.02.2014, 23:07

Jup, Windows GL Support ist (wie kaum anders zu erwarten, schließlich gibts ne Hausmarke) scheiße.
Also am besten einen Wrapper nehmen/schreiben (schreiben könnte nervig werden). Es gibt ein gl3w Python Programm dass dir den Wrapper schreiben kann... evt. auch für purebasic (Google)?

14

04.02.2014, 18:39

@DeKugelschieber: Das schlimmste an Microsofts OpenGL ist, dass sie es jedem Treiber-Hersteller verbieten Funktionen von Version 1.1 zu implementieren. Man soll also Version 1.1 von Microsoft, und alles andere aber vom Treiber laden -_-'.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

15

04.02.2014, 19:15

@DeKugelschieber: Das schlimmste an Microsofts OpenGL ist, dass sie es jedem Treiber-Hersteller verbieten Funktionen von Version 1.1 zu implementieren. Man soll also Version 1.1 von Microsoft, und alles andere aber vom Treiber laden -_-'.

Oha, seit wann ist das denn so? Und wie erklärst du mir folgenden Callstack:

... ;)

16

05.02.2014, 11:34

Da hab' ich 'nen Fehler gemacht. Wenn ich nur richtig lesen würde, auf der Seite von OpenGL steht's sogar noch, dass das Ganze nur ein Fallback ist:

Zitat

Without drivers, you will default to a software version of OpenGL 1.1 (on Win98, ME, and 2000), a Direct3D wrapper that supports OpenGL 1.1 (WinXP), or a Direct3D wrapper that supports OpenGL 1.1 (Windows Vista and Windows 7). None of these options are particularly fast, so installing drivers is always a good idea.
(http://www.opengl.org/wiki/Getting_Started)

:rolleyes: 'Tschuldigung.

Heiko

Frischling

  • »Heiko« ist der Autor dieses Themas

Beiträge: 19

Wohnort: @home

  • Private Nachricht senden

17

07.02.2014, 20:04

Also nochmal für mich zum Mitschreiben...
Ich gehe mal davon aus kein GLEW GLFW oder sonstwas zu nutzen, da mich derzeit erstmal die Funktionsweise des Ganzen interessiert.

Also die wglGetProcAdress Funktion der opengl32.dll ist dazu da um funktionen oberhalb der version 1 zur laufzeit zu laden?(bzw. den pointer darauf)

Ist das soweit richtig?

Nach meinem Verständnis machen hilfsmittel wie glew oder glfw doch genau das.

Edit: das was ich noch nicht verstanden habe, wie werden denn unterschiedliche contexte erstellt?also da gibts soweit ich weiß auch nen compatibility modus etc.
Sorry dass ich sowas frag, aber die informationen sind doch rar gesäät.


wenn ich glfw nutzen könnte, wäre das dann alles was ich für aktuelle opengl versionen brauche?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Heiko« (07.02.2014, 20:10)


Tobiking

1x Rätselkönig

  • Private Nachricht senden

18

07.02.2014, 22:10

Die Funktion mit der man (unter Windows) einen Kontext mit einer bestimmten Version und Profil erzeugt ist wglCreateContextAttribsARB. Das ist allerdings bereits eine Extension Funktion. Deswegen brauchst du erst einen normalen Kontext. Mit dem holst du dir die Extension WGL_ARB_create_context_profile um den richtigen Kontext erzeugen zu können. Sobald dieser erzeugt ist, kannst du den alten wieder löschen. Mit dem neuen Kontext holst du dir dann sämtliche Extensions die du haben möchtest.

Die Vorgehensweise ohne Hilfsmittel ist auf https://sites.google.com/site/opengltuto…2---tutorial-01 beschrieben. Ist aber eher unspektakulär und viel Tipparbeit, weswegen man wie schon erwähnt einfach sowas wie GLEW nimmt.

19

08.02.2014, 22:32

Genau, wglGetProcAddress, oder glXGetProcAddress, und wie sie alle heißen, laden dir lediglich die Funktionszeiger zur Laufzeit. Das heißt:

Funktionen zum Erstellen eines Kontextes => OpenGL32.dll / -.lib
Funktionen zum Laden der Funktionszeiger => OpenGL32.dll / -.lib
Funktionen von OpenGL, deren Funktionszeiger dann geladen werden => Grafiktreiber
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Gesamtpaket => GLFW

Wenn du also einen Wrapper um GLFW schreibst, hast du alles was du brauchst. Ansonsten musst du für jede deiner Zielplatformen herausfinden, wie du die Zeiger lädst, die entsprechenden Libraries laden, ....

Heiko

Frischling

  • »Heiko« ist der Autor dieses Themas

Beiträge: 19

Wohnort: @home

  • Private Nachricht senden

20

09.02.2014, 19:06

Okay soweit alles klar.
Ach und die Funktionen vom Grafikkartentreiber holt sich die wglGetProcAdress automatisch vom Treiber?

Was für Möglichkeiten habe ich denn im 2D Bereich, oder müsste ich das alles über Planes mit Textur machen?
Und bei animierten Sprites bliebe dann nur der Weg über UV Verschiebung.

Werde mir GLFW mal genauer ansehen.

Werbeanzeige