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

Aktuelle Zeit: Di Apr 23, 2024 19:55

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



Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
BeitragVerfasst: Do Jan 15, 2015 14:09 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Das Problem ist dass "glBegin" und der Immediate Mode keine moderne Grafikkarte mehr repräsentiert. Grafikkarten arbeiten Buffer basiert und parallel. Immediate Mode sollte vom Treiber in Buffer umgewandelt werden und die GPU arbeitet das dann ab. Es gibt keine Funktionen mehr in der Hardware die diese OpenGL Befehle repräsentieren. Die Immediate Mode Befehle werden im Prinzip zwecks Kompatibilität so zu sagen emuliert. Deshalb wurden sich auch aus dem OpenGL Standard genommen.

Wenn du wirklich gigantische Mengen zeichnen musst und alle Arten von Optimierungen fehlschlagen, besteht die theoretische Möglichkeit, dass du ein VBO anlegst und den Inhalt immer wieder änderst und immer wieder zeichnest. Rechne aber nicht mit viel Performance. :wink:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Jan 15, 2015 16:44 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
user69 hat geschrieben:
Ein paar Antworten würden mir aber noch helfen:
1. Wenn ich die Daten in chunks unterteile, was wäre dann eine gute Größe um das VBO optimal zu bedienen und auch nicht so leicht in Speicherprobleme mit großen Blöcken beim OpenGl upload zu geraten? Ich dacht so an 65.000 also unter 16 bit integer um auch im ElementArray nur 2 bytes zu nutzen.
2. Wäre es speedtechnisch vertretbar (also zumindest so schnell, wie GlBegin), wenn ich jedes Frame die Daten hochlade, zeichne und wieder freigebe?
3. Ist derzeit schon abzusehen, dass in absehbarer Zukunft die depricated Funktionen aus den OpenGL Treibern entfert werden?
4. Wäre es aus OpenGL speicher Sicht nicht evtl. doch sinvoll ab z.B. 2 mio Triangles auf das alte OpenGL zurückzufallen? Da habe ich solche Speicherprobleme ja nicht. (Ich weiß, das zumindest einmal mir davon abegeraten wurde, aber ich sehe im alten OpenGL duchaus Speichervorteile.)
5. Kann man mit modern OpenGl irgendwie zumindest den speed des alten glBegin erreichen, ohne für x mio triangles massiv speicher zu gebrauchen? Der Treiber tuts ja auch wenn ich im depricated glBegin zeichne (ok, ich nehme an der Vergleich hinkt etwas, da der Treiber mehr Möglichkeiten hat. Aber vielleicht gibts doch Ideen).

user69


1.) das haengt vom jeweiligen Zielsystem ab. Am besten du machst da eine globale Konstante die du spaeter waerend der Testphase leicht anpassen kannst.
2.) Bei dieser Menge wohl eher nicht...
3.) Nun ich bin mir bei den anderen Herstellern nicht sicher, aber Nvidia ist da ziemlich eindeutig: Es fliegen keine Funktionen raus.
Quelle
4.) Retained Mode APIs (z.B. modernes OpenGL) brauchen in der Regel mehr Speicher, da noch zusaetzlicher Overhead fuer das Model draufgeht. Bei Immediate Mode (z.B. Direct2D) verwaltet die Applikation selbst das Model und kann hier dementsprechend optimieren. Allerdings ist es sehr viel schwieriger Engpesse bei der Uebertragung zu vermeiden. Im Worstcase waeren das zum Beispiel alle Dreiecke pro Frame.
5.) Nun du koenntest Vertex Arrays benutzen. Da gibt es einmal eine alte und einmal eine moderne Objekt Variante (VAOs). Die moderne Variante koenntest du dann als eine Art Cache benutzen um haeufig verwendete Objekte auf der Grafikkarte abzulegen. Die beiden sind sich ausserdem so aehnlich das es kein Problem sein duerfte hier alles in einer Klasse zu erledigen.

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Jan 15, 2015 18:46 
Offline
Compliance Officer
Benutzeravatar

Registriert: So Aug 08, 2010 08:37
Beiträge: 460
Programmiersprache: C / C++ / Lua
Nun ja, ich würde mal sagen, dass Speicher heutzutage das billigere Bottleneck ist, Rechenzeit ist teurer ;)

_________________
offizieller DGL Compliance Beauftragter
Never run a changing system! (oder so)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Jan 15, 2015 20:02 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Nov 08, 2010 18:41
Beiträge: 769
Programmiersprache: Gestern
end hat geschrieben:
Nun ja, ich würde mal sagen, dass Speicher heutzutage das billigere Bottleneck ist, Rechenzeit ist teurer ;)


Nun in dem Fall ist ja nicht die Rechenzeit der Bottleneck sondern die Übertragungsrate. Und genau da will ja MS was tun ... also naja ist beides cool würd ich sagen :D

_________________
Meine Homepage


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Fr Jan 16, 2015 09:03 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 27, 2005 12:44
Beiträge: 393
Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Man könnte es vielleicht mit Buffer Object Streaming probieren. Man reserviert einen festen Speicher und sendet pro Frame mehrere Blöcke von Daten hoch (die dann sofort abgearbeitet werden müssen).

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


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 41 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.092s | 17 Queries | GZIP : On ]