Warum ist das DirectX Framework so schnell?
-
Hi,
mich würde interessieren, warum das DirectX Framework so schnell ist. Damit meine ich die Matrix- und Vektor-Funktionen wie D3DXMatrixRotationX usw.
So sind insbesondere Vektor-Normalisierung, Matrix-Transposition und Matrix-Inversion um den Faktor zwei bis drei schneller, als selbstgeschriebene Funktionen (zumindest bei mir).
Vielleicht weiß ja jemand, was DirectX intern macht. Werden prozessoroptimierte Algorithmen verwendet, die beispielsweise SSE oder MMX verwenden (wie die, die man auf den Intel-Seiten finden kann). Diese sind allerdings auch nicht so schnell, wie die DX-Funktionen.
Meine zweite Theorie ist, dass die Grafikhardware diese Funktionalität (z.B. Matrizen multiplizieren und invertieren) zur Verfügung stellt und DX das über den Treiber verwendet.
Weiß jemand näheres? Es würde mich sehr interessieren und ich frage mich auch, ob man selbst eine solche Geschwindigkeit erreichen kann.
-
es werden die intel und amd libs verwendet.
rapso->greets();
-
Ich schätze mal du meinst damit so Zeugs wie Math Kernel Library. Also so Sachen, die man bezahlen muss.
Kennt jemand schnelle libraries mit Vektor Normalisierung, Matrix Inversion etc., die auch noch kostenlos sind ? (Natürlich AUßER D3DX).
-
JensE schrieb:
Meine zweite Theorie ist, dass die Grafikhardware diese Funktionalität (z.B. Matrizen multiplizieren und invertieren) zur Verfügung stellt und DX das über den Treiber verwendet.
Das würde wohl nur was nützen, wenn das Ergebnis auf der GraKa weiterverwendet wird. Ansonsten wäre die Rückübertragung zu aufwendig und würde sich für einzelne Berechnungen kaum lohnen.
Wieso eigentlich nicht D3DX benutzen?
Bye, TGGC (Dem beste BdT)
-
TGGC schrieb:
Wieso eigentlich nicht D3DX benutzen?
Bye, TGGC (Dem beste BdT)
Weil es leider nicht plattformunabhängig ist. Da ist viel WinAPI Zeugs drin und das ist nicht gut. Ich denke mal nicht, dass man das auch auf einem Linux System verwenden kann.
-
DX kriegste eh nicht auf linux zum laufen, aufjedenfall nicht gut. Wenn dus plattformunabhängig haben willst, benutz OpenGL
-
Dann wird eben unter Linux was anderes benutzt.
Bye, TGGC (Dem beste BdT)
-
JensE schrieb:
mich würde interessieren, warum das DirectX Framework so schnell ist. Damit meine ich die Matrix- und Vektor-Funktionen wie D3DXMatrixRotationX usw.
otze schrieb:
DX kriegste eh nicht auf linux zum laufen, aufjedenfall nicht gut. Wenn dus plattformunabhängig haben willst, benutz OpenGL
Yo. Ich schlage vor: glxMatrixRotationX()
-
@JensE
http://www.netlib.org/blas/
http://www.oonumerics.org/
http://www.boost.org/libs/numeric/ublas/doc/index.htm