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

Aktuelle Zeit: Mi Okt 21, 2020 19:29

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



Ein neues Thema erstellen Auf das Thema antworten  [ 47 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4  Nächste
Autor Nachricht
 Betreff des Beitrags: Re: OpenGL 3 und alte PCs
BeitragVerfasst: Do Jan 16, 2014 18:48 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 573
Programmiersprache: C++
mathias hat geschrieben:
Wie erstelle ich solch einen Kontext für OpenGL 3.3 ?
Ich verlinke mal kurz rüber:
http://www.delphigl.com/forum/viewtopic.php?p=96171#p96171

Aber Vorsicht. Möglicherweise ist in dem Beispiel ein Fehler - siehe hier.
Mann, ist hier heute viel los. :wink:

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL 3 und alte PCs
BeitragVerfasst: Do Jan 16, 2014 19:46 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1210
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Wird hier der OpenGl 3.3 Kodex erstellt ?

Nur ist glfwxxxx irgendeine Funktion von einer Bibliotek.

Code:
  1. glfwOpenWindowHint(GLFW_FSAA_SAMPLES, 4); // 4x antialiasing
  2. glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3); // We want OpenGL 3.3
  3. glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 3);
  4. glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); //We don't want the old OpenGL
  5.  
  6. // Open a window and create its OpenGL context
  7. if( !glfwOpenWindow( 1024, 768, 0,0,0,0, 32,0, GLFW_WINDOW ) )
  8. {
  9.     fprintf( stderr, "Failed to open GLFW window\n" );
  10.     glfwTerminate();
  11.     return -1;
  12. }
  13.  
  14. // Initialize GLEW
  15. glewExperimental=true; // Needed in core profile
  16. if (glewInit() != GLEW_OK) {
  17.     fprintf(stderr, "Failed to initialize GLEW\n");
  18.     return -1;
  19. }
  20.  
  21. glfwSetWindowTitle( "Tutorial 01" );

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL 3 und alte PCs
BeitragVerfasst: Do Jan 16, 2014 19:56 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 573
Programmiersprache: C++
Wo hast du plötzlich diesen C++-Code her?

Ich meinte diesen Beispielcode aus der HTML-Datei des DGL-Headers:
Code:
  1. procedure MyGLInit;
  2. begin
  3.   InitOpenGL; // Don't forget, or first gl-Call will result in an access violation!
  4.   MyDC := GetDC(...);
  5.   MyRC := CreateRenderingContext(...);
  6.   RC := CreateRenderingContextVersion(DC, [opDoubleBuffered], 4, 2, True, 32, 24, 8, 0, 0, 0); // Creates an OpenGL 4.2 forward-compatible context
  7.   ...
  8. end;

Wobei du natürlich die 4 und die 2 jeweils durch eine 3 ersetzen musst.
Edit2: Das erste Edit entfernt, weil's falsch war. :oops:

_________________
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 22:13, insgesamt 2-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL 3 und alte PCs
BeitragVerfasst: Do Jan 16, 2014 21:12 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Die Versionsnummer ist wieder etwas anderes als das Core-Profil.
4.2 ist auch etwas übertrieben als Mindestanforderung.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL 3 und alte PCs
BeitragVerfasst: Do Jan 16, 2014 22:23 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1210
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Ich habe meinen Codes folgend abgeändert.
Wen ich es richtig verstanden habe, wird jetzt mindesten OpenGL 4.2 verlangt.
Aber mein PC unterstützt nur OpenGL 4.0.
Wieso läuft mein Programm ?

Oder verstehe ich das mit RC und MyRC falsch ?
Code:
  1. procedure TForm1.FormCreate(Sender: TObject);
  2. begin
  3.   if not InitOpenGL then Application.Terminate;
  4.   DC := GetDC(Handle);
  5.   //  RC := CreateRenderingContext(DC, [opDoubleBuffered], 32, 24, 0, 0, 0, 0);
  6.   RC := CreateRenderingContextVersion(DC, [opDoubleBuffered], 4, 2, True, 32, 24, 8, 0, 0, 0); // Creates an OpenGL 4.2 forward-compatible context
  7.   ActivateRenderingContext(DC, RC);
  8.  
  9.   InitScene;
  10.   Timer1.Enabled := True;
  11. end;  

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL 3 und alte PCs
BeitragVerfasst: Do Jan 16, 2014 23:22 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1210
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Wieso steht einmal RC und einmal MyRC ?

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL 3 und alte PCs
BeitragVerfasst: Fr Jan 17, 2014 14:22 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 573
Programmiersprache: C++
Das ist eine berechtigte Frage. Also wohl noch ein Fehler im Beispielcode. Ich habe den Punkt im Feedback-Forum hinzugefügt. Warten wir auf eine Antwort...

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL 3 und alte PCs
BeitragVerfasst: So Jan 26, 2014 16:43 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1210
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Nochmal zum eigentlichen Thema zurück.

Wen man eine aktuelle Grafik-Karte kauft, unterstütz die das aktuelle OpenGL ?

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL 3 und alte PCs
BeitragVerfasst: So Jan 26, 2014 17:11 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 573
Programmiersprache: C++
Also OpenGL 4.3 wird afaik von allen Herstellern unterstützt*. Bei Version 4.4 kann es sein, dass noch nicht alle fertig sind.

*Allerdings ist die Qualität des OpenGL-Supports durchaus von Hersteller zu Hersteller verschieden, wie du ja auch schon mitbekommen hast. AMD will z.B. offenbar lieber seine eigene API in den Markt drücken, statt sich ordentlich um OpenGL zu kümmern.

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL 3 und alte PCs
BeitragVerfasst: So Jan 26, 2014 17:16 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1210
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Zitat:
AMD will z.B. offenbar lieber seine eigene API in den Markt drücken

Das habe ich gestern zufällig gelesen, das Ati eine eigene API für seine Karten hat.

Zitat:
Allerdings ist die Qualität des OpenGL-Supports durchaus von Hersteller zu Hersteller verschieden

Soviele Hersteller gibt es zum Glück gar nicht mehr.
Ausser NVidia/Ati und Intel kenne ich keine mehr, vielleicht noch Matrox.

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL 3 und alte PCs
BeitragVerfasst: So Jan 26, 2014 23:34 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Zitat:
Das habe ich gestern zufällig gelesen, das Ati eine eigene API für seine Karten hat.

ATI gibt es übrigens schon lange nicht mehr. Von AMD aufgekauft.

Zitat:
Soviele Hersteller gibt es zum Glück gar nicht mehr.

Dafür gibt es um so mehr Betriebssysteme.

Mantle sehe ich sehr zwiegespalten.
Die Grafik-APIs die es bisher gibt (OpenGL & D3D) sind ja nicht das Gelbe vom Ei. Mit dem einen ist man ziemlich platformabhänig, sogar innerhalb Windows. Microsoft gibt ja neue DirectX Versionen grundsätzlich nur noch für die neusten Betriebssysteme raus. Mit dem Anderen gibt es noch verschiedene Kinderkrankheiten (Fehlender DSA, schlechte Treiber, legacy Funktionen, Inkompatiblitäten zb. durch verschiedene Shadercompiler). Und das es unnötigen Overhead gibt, glaube ich sofort. Siehe zb. hier: http://www.nvidia.com/object/bindless_graphics.html
Andererseits weiß ich nicht, ob diese Probleme wirklich durch Mantle gelöst werden (können).


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL 3 und alte PCs
BeitragVerfasst: So Jan 26, 2014 23:57 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 14, 2013 21:17
Beiträge: 573
Programmiersprache: C++
mathias hat geschrieben:
Soviele Hersteller gibt es zum Glück gar nicht mehr.
Das "zum Glück" kann ich nicht ganz nachvollziehen. Meiner Meinung nach könnte es ruhig etwas mehr Hersteller geben, die in gegenseitiger Konkurrenz stehen. Vielleicht würde das auch der Treiberqualität zugute kommen. Konkurrenz belebt schließlich den Markt und ist für den Endkunden fast immer gut.

Was wir dagegen imo nicht gebrauchen können, ist noch eine Grafikschnittstelle. Da krempelt man erst OpenGL mit Version 3 komplett um, nur um die Treiberentwicklung zu vereinfachen und Code zu entschlacken und dann kommt AMD und will eine neue API einführen. Herzlichen Glückwunsch! Damit dürfte noch mehr Entwicklungsarbeit nötig sein, als wenn wir die deprecated functions alle drin gelassen hätten.

Aus Entwicklersicht wäre es wünschenswert, wenn man eine einheitliche Schnittstelle für alle Grafikkarten, alle Betriebssysteme und alle Programmiersprachen hätte, bei der die selben API-Aufrufe überall zum selben Ergebnis führen. So etwas haben wir - theoretisch - seit 15 Jahren oder so mit OpenGL. Ich hatte mich schon gefreut, dass Microsoft offenbar die Weiterentwicklung von DirectX im Wesentlichen eingestellt hat und OpenGL durch mobile Apps usw. sowieso schon einiges an Bedeutung zurückgewonnen hatte. Und dann kommt AMD mit Mantle an... argh! :twisted:

_________________
So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL 3 und alte PCs
BeitragVerfasst: Mo Jan 27, 2014 12:06 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2576
Wohnort: Berlin
Programmiersprache: C/C++, C#
Zur Problematik mit den 2 Render Context.
Um ein OpenGL 3 oder höher Context zu erstellen, muss man einen OpenGL 1-2 Context bereits haben, deswegen wird erst ein OGL1.2 Context erstellt, dann geprüft, welche OGL Version es ist und abhängig davon kann dann ein 3.x oder 4.x Context erzeugt werden.
Der 1.2 Context wirft man wieder weg und nutzt nur den 3-4 Context.
Mit 4 wird es oder ist vieleicht sogar schon eine neue Funktion für das direkte erstellen in arbeit/schon verfügbar.
Das Problem liegt in den Betriebsystem, da die erstellung eine Systemspezifische angelegenheit ist(wgl..., xgl...), muss man da ein Workaround basteln, bis die OpenGL System API entsprechend erweitert ist.

D3D wird von MS dann weiter entwickelt, wenn MS ein Grund für neue Features sieht, wie z.B. als letztes die swapchain für Mobile Devices.
Khronos entwickelt OpenGL weiter, wenn alle Beteiligten ein Vorschlag abnicken aber da gibt es auch mal Firmen, die keine neuen Funktionalitäten haben wollen, weil es dem eigenem Produkt(z.B. MS mit D3D) schadet.
Prinzipiell sind AMD, Nvidia, Intel und IBM sehr daran interessiert die API zu erweitern aber alle wollen auch nicht ständig Code erweitern und pflegen, daher hat man mit 3.0 auch erstmal ein Kahlschlag gemacht, bevor man mit der Roadmap weiter geht.
Wie es weiter entwickelt wird, hängt auch stark vom Markt ab.
So hat z.b. bindless objects ein offenes Ohr gefunden, als das binden von ressourcen zum bottleneck wurde.
Integer und atomic operation hat man gefordert, um mehr in die Shader aus zu lagern, wie z.B. loadbalanced shader oder highlevel debugging.
Rendertargets über 8Bit mit 4Kanälen sind auch erst mit HDR und physical based rendering interessant geworden.
Low level debugging API's wurden hinzugefügt, als die Spieleentwickler vermehrt geschriehen haben und AMD den einzigen guten gDebugger für viel geld gekauft und unter ihrer Herschafft frei(bevor die Software aufgekauft wurde war es kostenpflichtig) zur verfügung gestellt haben.
Nun kann man mit OpenGL 4 sich ohne externes tool so ziemlich alles interessante raus ziehen.
OpenGL 3 und 4, OpenCL, WebGL, WebCL sind alles Produkte die aus der Not entstanden sind und nicht weil jemand vorher schon eine Vision hatte und wusste das die Leute es brauchen könnten(meine Beobachtung).

Mantle
Mantle ist keine weitere API neben OGL und D3D, sondern ist eine neue API darunter und eher mit RSXGL(Sony low level GL like API für PS3) zu vergleichen.
Die ganzen dinge, die man bei OpenGL nicht machen muss, weil es der Treiber für einen übernimmt fallen bei Mantle an aber man kann sie auf eine viel effizientere weise implementieren, weil es Projektspezifisch ist.
Bei Mantle hab ich ein Speicherpool auf dem VRAM und wie ich den mir einteile und wo ich was hin kopiere, wann ich das tue, wann ich es zum rendern verwende, wie meine Shadersprache aus sieht oder gar die fixed pipeine muss man alles selber fest legen.
Dieser massive overhead macht es eigentlich nur für Engine Entwickler und große Studios interessant.
Unser einer wird sich das vieleicht mal angucken und das wars aber kleine Spiele werden wohl eher selten auf Mantle aufsetzen.
Ein weiteres Problem bei Mantle ist die Kompatibilität, da AMD der Owner ist und sich nicht unnötig viel Arbeit aufhalsen will, hat man natürlich nur die aktuelle Generation als min Spec. genommen.
Ich hab gelesen, dass Nvidia auch Gerüchtemässig an einer eigenen Lösung für Geforce Karten arbeitet.
Interessant ist es für große Studios, da diese ihre Engine eh so schreiben, dass die darunter liegenden API's austauschbar sind und Mantle soll bei Battle Field 4 10% mehr FPS und teilweise bis zu 100% mehr Leistung auf Mantle API bringen. Bedenkt man, dass es ein alpha Treiber ist und auch die Battle Field 4 Implementierung noch nicht ausgereift ist, zeigt es viel Potenzial.
Sound, Physic konnten die Jungs von Frostbite auf die GPU auslagern, ohne Physx oder ähnliches zu verwenden, reine GPU programmierung mit Mantle.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL 3 und alte PCs
BeitragVerfasst: Mo Feb 10, 2014 18:38 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1210
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Wie fest schränke ich mich ein, wen ich OpenGL Shading Language 1.3 anstelle 3.3 nehme ?

Mir ist aufgefallen, das PCs im Umlauf sind welche OpenGL 3.0-3.2 haben.

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: OpenGL 3 und alte PCs
BeitragVerfasst: Mo Feb 10, 2014 19:20 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2576
Wohnort: Berlin
Programmiersprache: C/C++, C#
1.3 hat so die meisten neuerungen rein gebracht, 1.4 war pflege, 1.5 sind geoemtry shader(tesselation) und 3.3 wieder pflege.
Also 1.3 oder 1.5 sind die großen Versionen aber die anderen bringen teilweise kleine Änderungen die mitunter interessant sind.
In den einzelnen http://en.wikipedia.org/wiki/OpenGL_Shading_Language#cite_note-6 Versionen findet man unter changes auch ein Punkt, wo die Änderungen zur Vorversion aufgelistet sind.

Mit 3.3 fährt man ziemlich sicher, da hat man sehr viele der nützlichen Features und ne riesige Userbase.
Allerdings gehe ich hier von PC spielern aus, ~60% der Steam Spieler haben schon OGL4.4 fähige Hardware und rechnet man die Entwicklungsdauer drauf ... .

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 47 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4  Nächste
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 5 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.102s | 17 Queries | GZIP : On ]