Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

11.08.2005, 16:06

Mathe Bibliothek - wofür?

Hallo, ich wollte mal Fragen warum alle Welt sich selbst Klassen für matrizen, vektoren etc. programmiert. In der DX API gibt es doch solche strukturen. Es sind zwar keine Klassen, sondern soweit ich weiss z.B. Structs und an einer anderen Stelle einige Funktionen dafür, aber im Grund enthält es die Funktionalität einer z.B. Matrix klasse.
Also wofür selber schreiben, wie in der TriBase engine? Vlt. sind diese DX implementierungen sogar schneller.
Wenn man natürlich eine Engine macht die OGL + DX unterstützen soll, dann versteh ichs, aber z.B. die TriBase Engine hat dies sicher nicht zum Ziel.

MFG Beliar

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

11.08.2005, 16:31

Re: Mathe Bibliothek - wofür?

Zitat von »"Beliar"«

Also wofür selber schreiben

Um zu lernen, was dahinter steckt.

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

3

11.08.2005, 17:50

Beliar
Gibt viele Gründe:
z. B. Flexibler (ich kann diesen D3DX-Style nicht ab)
z. B. Lernst was
z. B. Portabler
z. B. leichter erweiterbar
z. B. Schneller (Wehe es sagt einer D3DX sei schnell! Viele Funktionen sind so lam wie die Schnecke auf der Schildkröte)
z. B. du kannst sie nachträglich optimieren
z. B. dank templates spezialisierbarer auf einen Datentyp z.B. double
usw.

Könnte die Liste weiterführen, aber ich glaub mit dem bisschen siehst du schon den unterschied, warum es praktisch ist so was zu schreiben.

Dave

Alter Hase

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

4

11.08.2005, 18:10

Zitat von »"Patrick"«

Wehe es sagt einer D3DX sei schnell! Viele Funktionen sind so lam wie die Schnecke auf der Schildkröte


immerhin nicht so langsam wie ne schnecke ohne schildkröte, vorrausgesetzt beide laufen in die gleiche richtung ;)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

11.08.2005, 18:27

also dass die D3DX mathe funktionen lahm sind hab ich noch nie gehört :o

eher das gegenteil...

6

11.08.2005, 21:17

Zitat von »"Patrick"«

Beliar

z. B. dank templates spezialisierbarer auf einen Datentyp z.B. double
usw.


Also das versteh ich jetzt nicht ganz. Ich hab mich zwar nicht so genau mit Templates beschäftigt, aber soweit ich das verstanden habe sollen sie ein Werkzeug zur verallgemeinerung von Code sein. Man soll also einen Algorithmus für mehrere Datentypen mit dem selben Code implementieren können. Wenn man den Algo oder die Datenstruktur oder was auch immer auf einen Typ spezialisieren will kann man sie doch genauso gut als normale Funktion/Klasse schreiben 0o

Sicaine

unregistriert

7

11.08.2005, 21:50

Zitat von »"Patrick"«

Beliar
Gibt viele Gründe:
z. B. Schneller (Wehe es sagt einer D3DX sei schnell! Viele Funktionen sind so lam wie die Schnecke auf der Schildkröte)


oO das will ich auch bewiesen haben! Weil die Profies sowas simples langsam implementieren sicher doch :ohoh:

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

11.08.2005, 21:50

ich denk er meint sowas in der art:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
template<class T> class vector3d
{

public:

    T x;
    T y;
    T z;

    void operator +=( T f )
    {

        x += f;
        y += f;
        z += f;

    }

    T operator *(vector3d& v) const
    {

        return ( x * v.x + y * v.y + z * v.z );
    };

    .
    .
    .

    vector3d();
    ~vector3d();

};


also eine vektorklasse die sich für beliebige typen verwenden lässt.
ne extremere variante hätte dann auch noch eine variable dimension.

hab das jetzt nur so einfach mal hingetippt, ohne über sinn und syntaxfehler nachzudenken ;D


achja, ich hab mal von einem typen gelesen, der sich echt mühe gab aus seiner mathe lib mit SIMD & CO. das letze rauszuholen und trozdem langasamer war als d3dx...

D3DX is afaik in zusammenarbeit mit ATI, nVIDIA, INTEL, AMD und wie sie alle heißen entwickelt worden und enthält extremste herstellerspezifische optimierungen.
da waren also keine noobs am werk und die speed wird dementsprechend sein ;)

wie gesagt, afaik -> alle angaben ohne gewähr. ich lass mich auch gern eines besseren belehren...

9

12.08.2005, 09:05

Ja dot, genau das meinte ich. Diese Template Klasse von dir könnte man jetzt mit Integern, Doubles oder sonst was verwenden. Also ist es keine spezialisierung auf Double sondern eine verallgemeinerung.

Und das von wegen Geschwindigkeit dachte ich mir eben auch.

@David Scherfgen, ok da hast du recht. Einmal implementieren ist sicher eine gute Idee um die Mathematik der Matrizen zu verstehen. Aber bei späteren Engines vlt. nicht.

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

10

12.08.2005, 11:19

Ich bin trotzdem für Selbermachen, Selbst ist der Mann.

Auch wenn das mit der Geschwindigkeit so stimmt wie viele hier der Meinung sind.

Im Grunde liegt Patrick schon gut mit seinem Argumenten "warum man dies tun sollte". Allein schon die Portabilität spielt eine große Rolle.

Werbeanzeige