Aber Vorsicht. Möglicherweise ist in dem Beispiel ein Fehler - siehe hier. Mann, ist hier heute viel los.
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
Programmiersprache: C++
Wo hast du plötzlich diesen C++-Code her?
Ich meinte diesen Beispielcode aus der HTML-Datei des DGL-Headers:
Code:
procedure MyGLInit;
begin
InitOpenGL;// Don't forget, or first gl-Call will result in an access violation!
MyDC := GetDC(...);
MyRC := CreateRenderingContext(...);
RC := CreateRenderingContextVersion(DC,[opDoubleBuffered],4,2,True,32,24,8,0,0,0);// Creates an OpenGL 4.2 forward-compatible context
...
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.
_________________ 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.
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 ?
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
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)
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
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)
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).
Registriert: Mi Aug 14, 2013 21:17 Beiträge: 588
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!
_________________ So aktivierst du Syntaxhighlighting im Forum: [code=pascal ][/code], [code=cpp ][/code], [code=java ][/code] oder [code=glsl ][/code] (ohne die Leerzeichen)
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2622 Wohnort: Berlin
Programmiersprache: Go, 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
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2622 Wohnort: Berlin
Programmiersprache: Go, 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
Mitglieder in diesem Forum: 0 Mitglieder und 12 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.