Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 07:54

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: OpenGL unter C
BeitragVerfasst: Di Dez 22, 2009 16:00 
Offline
DGL Member

Registriert: Mi Feb 27, 2008 15:26
Beiträge: 12
Ich benutze MinGW und würde gerne OpenGL 3 benutzen. Header vom Compiler sind von Mesa-3D von 1999. Also steinalt.
Nach langem Googlen habe ich folgendes gefunden:
http://www.opengl.org/wiki/Getting_started

Zitat:
If you will be programming for Windows, typically compilers comes with a standard OpenGL 1.1 .h and .lib.
Microsoft will never update gl.h and opengl32.lib that comes with their compiler. It hasn't been updated since 1995. Basically, the solution is to use glext.h and wglext.h (wglext.h is for Windows only) which define all the GL 1.2, 1.3, 1.4, 1.5, 2.0, 2.1 and above tokens and functions. Keep reading.
Also, for other compilers for Windows, the same applies : gl.h and opengl32.a is limited to GL 1.1.
For Linux and others, you might want to borrow the same idea (getting function pointers for the GL functions)
To access higher OpenGL functions, you would have to get the function pointers.
For example, in C or C++, this is what you would do
PS : The info here applies also to GL 3.0


Ähm ja ne klar, ich soll für jede Funktion > 1.1 erstmal fünf Zeilen Code schreiben.
Jetzt wird mir irgendwie klar, warum OpenGL keine große Verbreitung hat... es sei dann man liest zu Ende (die Seite ist iwie echt blöd gemacht :/)
http://www.opengl.org/wiki/Getting_star ... _and_Above
http://www.opengl.org/registry/api/gl3.h

Das Lustige ist aber immernoch, dass man ja keine Importbibliothek hat. Wie soll man das dann bitteschön benutzen?

/EDIT:
In der gl3.h sind alle Funktionen durch typedefs definiert. Hach super, immernoch tonnenweise Code für nichts schreiben. Ich glaube ich lerne lieber noch schnell auf DirectX um...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL unter C
BeitragVerfasst: Di Dez 22, 2009 16:55 
Offline
DGL Member

Registriert: Sa Mär 14, 2009 17:48
Beiträge: 99
Programmiersprache: D, Java, C++
Was spricht denn gegen GLEW? http://glew.sourceforge.net/ hab ich damals immer verwendet.

Wenn du DirectX lernen möchtest ist das auchnicht verkehrt, kommt eben darauf an wie und wofür du programmieren möchtest, wenn dir der typische Windows DAU reicht dann bist du mit DirectX nicht schlecht bedient, wird nur lustig wenn du dann auf DirectX 11 willst, dann geht ohne Windows 7/Vista nichtsmehr, und die Funktionalität die DirectX 11 bringt kriegst du mit OpenGL auch unter XP, Linux derivaten usw. usf.

Das OpenGL nicht weit verbreitet ist ist übrigens - mit Verlaub - unfug.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL unter C
BeitragVerfasst: Di Dez 22, 2009 17:35 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
Jetzt wird mir irgendwie klar, warum OpenGL keine große Verbreitung hat...

Das ist nur unter Windows so....weil M$ nun mal möchte das du DirectX benutzt...unter Linux und ich glaube auch allen anderen Betriebssystemen (Mac, BSD, ...) kommt der OpenGL-Header einfach mit dem Grafiktreiber. Da brauchst du auch nicht mit irgendwelchen Funktionspointern rumfummeln.

OpenGL ist übrigens der Industrie-Standard für 3D-Grafik. Linux und Mac nutzen OpenGL, auch die Playstation nutzt OpenGL. Ist sicher weiter verbreitet als DirectX.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL unter C
BeitragVerfasst: Di Dez 22, 2009 19:19 
Offline
DGL Member

Registriert: Mi Feb 27, 2008 15:26
Beiträge: 12
Bei GLEW kann ich die OpenGL Funktionen aber nicht einfach so benutzen, sondern muss eben die Funktionen mit dem Präfix glew benutzen. Das ist nichts halbes und nichts ganzes.

Es kann doch nicht so schwer sein, es muss doch irgendwo ein Alles-Drin-Packet geben!?!?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL unter C
BeitragVerfasst: Di Dez 22, 2009 20:05 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
csderats hat geschrieben:
Es kann doch nicht so schwer sein, es muss doch irgendwo ein Alles-Drin-Packet geben!?!?

Aber das ist nicht das Prinzip von OpenGL. Denn OpenGL hat einen Kern und zusätzlich dazu gibt es Erweiterungen. Warum der Header von opengl.org so komisch aufgebaut ist. Dafür gibt es eine ganz einfache Erklärung. Die Treiber installieren/registrieren eine DLL im Windows. Die OpenGL32.dll greift auf diese DLLs zu sobald OpenGL erstellt werden soll. Die OpenGL32.dll selber hat kaum funktionalität sondern sie bietet nur die Möglichkeit auf die Treiberbestandteile zuzugreifen ohne genau zu wissen wie die aussehen. Denn du kannst 1 Karte von ATI/AMD in deine System haben und eine von NVidia. Aus genau diesem Grund sind die ganzen Funktionen in den Headern alle nur Typen. Denn du musst die Pointer mittels wglGetProcAddress erfragen. Eine Methode die wieder aus dem Treiber kommt. Deswegen kann man das nicht statisch linken. Was bei 2 unterschiedlichen Herstellern auch nahezu unmöglich wäre. Außerdem kann man bei dynamischen Linken auch auf das Fehlen von Erweiterungen reagieren etc.

Wenn du bei DirectX neue Funktionen haben willst musst im übrigen auf eine komplett neue DirectX Version zurückgreifen. Damit ist der bereits geschriebene Code hinfällig (funktioniert nicht mehr) und wenn du Glück hast (OpenGL 3.0 = DX 10+) dann benötigst du auch noch eine neue Platform (Vista+). Bei OpenGL nicht.

Ich weiß allerdings nicht warum dich ein Präfix so sehr stört. OpenGL bleibt OpenGL. Ob es nun glew heißt oder gl. In den Dokumentationen zu den Erweiterungen wird auf das GL im übrigen auch überall verzichtet. Und von glew habe ich bisher auch nur gutes gehört. Aber na ja. Kann ja nicht jeder so etwas wie die dglOpenGL.pas haben. ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL unter C
BeitragVerfasst: Di Dez 22, 2009 21:38 
Offline
DGL Member

Registriert: Sa Mär 14, 2009 17:48
Beiträge: 99
Programmiersprache: D, Java, C++
csderats hat geschrieben:
Bei GLEW kann ich die OpenGL Funktionen aber nicht einfach so benutzen, sondern muss eben die Funktionen mit dem Präfix glew benutzen. Das ist nichts halbes und nichts ganzes.

Es kann doch nicht so schwer sein, es muss doch irgendwo ein Alles-Drin-Packet geben!?!?


Quatsch, die funktionspointer die von glew initialisiert werden haben als präfix auch nur ein gl, du kannst die OpenGL Funktionen also wie gewohnt aufrufen. Die Funktionen mit dem "glew" als Prefix sind glew Spezifisch, diese initialisieren bspw. deine Funktionspointer, erstellen dir nen Context, laden extensions usw. usf.

Gucks dir an, dass ist das was du suchst ;-). Du kannst bis einschließlich OpenGL 3 alle Core & Extension Funktionen nutzen.

// Edit: Siehe auch hier: http://glew.sourceforge.net/advanced.html unter "Separate Namespace", du hast du glXXX Funktionen immer als alias auf die glewXXX Funktionen, warum wird erklärt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL unter C
BeitragVerfasst: Di Dez 22, 2009 22:22 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 27, 2005 12:44
Beiträge: 393
Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Hallo,

oder man versucht es mit glee, aber einfacher geht es dann wirklich nicht mehr :roll:

Viele Grüße
dj3hut

_________________
Wenn Gauß heute lebte, wäre er ein Hacker.
Peter Sarnak, Professor an der Princeton University


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL unter C
BeitragVerfasst: Di Dez 22, 2009 22:33 
Offline
DGL Member

Registriert: Mi Feb 27, 2008 15:26
Beiträge: 12
Ok jetzt habe sogar ich es verstanden. Thx.

(btw. GLee ist ja mal ziemlich cool, der Sourcecode wird vor dem Kompilieren von einem Script generiert - Was aber auch sinnvoll ist, wenn man bedenkt, dass der Src fast nur dasselbe ist. Anyway werde ich jetzt GLEW benutzen.)

Danke an alle...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL unter C
BeitragVerfasst: Mi Dez 23, 2009 18:01 
Offline
DGL Member

Registriert: Mi Feb 27, 2008 15:26
Beiträge: 12
Ich habe noch ein recht merkwürdiges Problem:
Code:
  1. if (!GLEW_VERSION_3_0)
(Selbstverständlich kommt danach noch was ;) )
Erzeugt folgenden Fehler:
Zitat:
undefined reference to `_imp____GLEW_VERSION_3_0'

Nun ist GLEW_VERSION_3_0 aber keine Funktion, sondern ist folgendermaßen definiert:
Code:
  1. #define GLEW_VERSION_3_0 GLEW_GET_VAR(__GLEW_VERSION_3_0)
  2. #define GLEW_GET_VAR(x) (*(const GLboolean*)&x)

Also ist GLEW_GET_VAR(x) dé facto x.
Und __GLEW_VERSION_3_0 ist so im Header definiert:
Code:
  1. GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_0;


Code:
  1. #define GLEW_VAR_EXPORT GLEWAPI
  2. #define GLEWAPI extern __declspec(dllimport)

Also sieht GLEW_VERSION_3_0 nach dem Präprozessor so aus:
Code:
  1. __GLEW_VERSION_3_0()

In der glew32.dll ist diese Funktion auch enthalten, aber der Linker scheint sie in der Importbibliothek nicht zu finden!?

/EDIT:
Ich habe mir jetzt kurzerhand eine neue Importbibliothek für MinGW erstellt (1): http://dl.28398.org/libglew32.dll.a
Die ist ca. 2 MiB groß. Die Originale war nur ca. 300 kB groß, offenbar fehlten da viele Funktionen. Jetzt läuft es.

(1) http://sei.pku.edu.cn/~caodg/course/c/r ... ltool.html , bereits in der MinGW Suite enthalten.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 15 Queries | GZIP : On ]