|
You last visited: Today at 03:44
Advertisement
Direct X
Discussion on Direct X within the C/C++ forum part of the Coders Den category.
12/06/2015, 13:04
|
#1
|
elite*gold: 130
Join Date: Apr 2012
Posts: 1,173
Received Thanks: 670
|
Direct X
Ich hätte mal hier eine Frage zu DirectX / Render Aufteilung.
Derzeit rendered ein Thread sowohl den Scene Bereich (3D) und danach den HUD/Sprite Bereich (2D). Dies geschieht jeweils auf den gleichen Context und wird danach simpel über die swapchain ausgegeben. Jetzt bin ich am überlegen ob ich nicht 2 getimte Threads laufen lassen wobei das 1 den Scene bereich rendered und das andere HUD/Sprites usw.. und danach wen beide Threads fertig sind die Contexte übereinander lege. (Zuerst der Scene Context und darauf den 2D Context)
Jetzt frage ich mich aber, kann man die Contexte in Direct X 11 einfach so überlappen ? Und wenn ja wie verbinde ich nachher den 2D context mit Alpha state mit dem 3D Context?
|
|
|
12/06/2015, 13:54
|
#2
|
elite*gold: 966
Join Date: Apr 2010
Posts: 1,105
Received Thanks: 681
|
Ich fürchte, dass das zu keinem signifikanten Performanceboost führen wird, da das Bottleneck hier die Kommunikation mit der Grafikkarte ist. Für diese ist meines Wissens nach keine Parallelisierung möglich bzw. wird der Treiber dafür sorgen, dass eigentlich parallele Aufrufe sowieso sequentiell abgearbeitet werden. Man möge mich korrigieren, wenn ich falsch liege, denn 100%ig sicher bin ich mir da nicht.
Ich würde versuchen dort generell anders zu optimieren. Beispielsweise hat man im HUD ja häufig sich nicht veränderliche Objekte / Dinge die über viele Frames gleich bleiben. Die könnte man einmalig in eine andere Textur / auf ein anderes Surface rendern und dann, solange die Dinge gleich bleiben nur diese Textur rendern. In der Welt vielleicht auch ein paar Objekte zusammenführen und ggf. einen Texture Atlas nutzen, wo es sich anbietet.
Mit freundlichen Grüßen
Jeoni
|
|
|
12/06/2015, 14:17
|
#3
|
elite*gold: 130
Join Date: Apr 2012
Posts: 1,173
Received Thanks: 670
|
Quote:
Originally Posted by Jeoni
Ich fürchte, dass das zu keinem signifikanten Performanceboost führen wird, da das Bottleneck hier die Kommunikation mit der Grafikkarte ist. Für diese ist meines Wissens nach keine Parallelisierung möglich bzw. wird der Treiber dafür sorgen, dass eigentlich parallele Aufrufe sowieso sequentiell abgearbeitet werden. Man möge mich korrigieren, wenn ich falsch liege, denn 100%ig sicher bin ich mir da nicht.
Ich würde versuchen dort generell anders zu optimieren. Beispielsweise hat man im HUD ja häufig sich nicht veränderliche Objekte / Dinge die über viele Frames gleich bleiben. Die könnte man einmalig in eine andere Textur / auf ein anderes Surface rendern und dann, solange die Dinge gleich bleiben nur diese Textur rendern. In der Welt vielleicht auch ein paar Objekte zusammenführen und ggf. einen Texture Atlas nutzen, wo es sich anbietet.
Mit freundlichen Grüßen
Jeoni
|
Danke schon mal. Also stelle ich mir das gerade wie caching vor oder ?
Wobei ich mich immernoch frage wieso die ganzen XYZ games mehrere Threads zum rendern nutzen.
|
|
|
12/06/2015, 14:24
|
#4
|
elite*gold: 966
Join Date: Apr 2010
Posts: 1,105
Received Thanks: 681
|
Kann man sich in der Tat in etwa wie Caching vorstellen. Hab das Wort in diesem Zusammenhang nur noch nicht gehört.
Nutzen die Games tatsächlich mehrere Threads zum Rendern? Mehrere Threads generell ist ja durchaus verständlich, gibt ja auch noch andere Sachen abgesehen vom Rendern. Aber meines Wissens nach kann die Grafikkarte auch nur eine Aufgabe erledigen. Diese zwar hochparallelisiert, aber halt nur ein Satz Shader, also nur ein Zweck zur gleichen Zeit. Könnte aber auch sein, dass das nur die Einschränkung von d3d ist. Wobei selbst wenn man mehrere Aufgaben gleichzeitig bearbeiten lassen könnte, diese entsprechend langsamer laufen würden, weil die Resourcen der Grafikkarte (Shadereinheiten) auf die Aufgaben aufgeteilt werden müssten.
Mit freundlichen Grüßen
Jeoni
|
|
|
12/06/2015, 15:05
|
#5
|
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 573
|
Rendern in mehreren Threads ist eine der großen Neuerungen von Direct X 12, und bei vorigen Versionen nahezu unmöglich, bzw. komplett unbrauchbar. Spiele verwenden eigentlich immer nur einen Thread zum rendern. Ich glaube du hast da irgend etwas missverstanden. Spiele benutzen zwar mehrere Threads, aber nicht zum rendern, zumindest nicht unter DirectX < 12 oder OpenGL.
|
|
|
 |
Similar Threads
|
can please direct me
03/06/2013 - Need for Speed World - 3 Replies
may someone please direct me to thread that has the free roam cam hack? i need it for a mini project:D
|
Direct X 8.1
04/14/2011 - Wolfteam - 20 Replies
Hei, also wenn ich wolfteam starten will erscheint eine meldung auf englisch das direct x 8.1 fehlt, wenn ich es downloaden will steht da nur für windows 98 und millenium edition, die neuere version 9.0 giebt es für vista (welche sich hab) aber beim installieren kommt das ich dieses programm schon habe..habe wolfteam entfernt,deinstalliert neu gedownloadet aber trotzdem immer diese meldung
bei anderen spielen genau das gleiche
habt ihr villt ideen oder könnt mir helfen?
|
WOuld someone help direct me....
07/27/2010 - GW Bots - 7 Replies
Hi, due to my lack in ability to speak dutch/german and the fact that i cant find a translator thats worth anything.....I have been scouring this site for a GW bot that farms snow wurms in Boreal Station. If anyone can direct me to that i would be in your debt. Thank you and have a wonderful day.
|
can any direct me
06/19/2009 - Zero - 0 Replies
can any please tell me how i would go about makeing a spped hack or if there is a topic explainging already i cant see please send me the address
|
looking for direct x 9
03/09/2008 - GunZ - 1 Replies
im looking for direct x 9 for gunz if you know the website please tell me thanks:cool:
|
All times are GMT +1. The time now is 03:44.
|
|