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

idontknow

unregistriert

1

09.02.2009, 20:38

IDirectx9 + Zeigervariante / Unnütz??

hey ich habe hier mal ne simple frage für euch worauf ich mir keinen reim machen kann

Was ist eigentlich der Unterschied zwischen IDirectx9 (oder wie die Dinger heißen!)
und PDirectx9??
Letzteres sei anscheinedn eine Zeigervariante, aber wieso? ein Zeiger wäre ja in diesem Falle, Directx9* xxx.


kann mir mal wer erklären worin bei den P**** Dingern der Vorteil liegt? Gibts überhaupt einen???

mfg

2

09.02.2009, 20:41

nö, das ist dasselbe, microsoft macht nur gern für alles mögliche Typedefs:

C-/C++-Quelltext

1
typedef IDirect3DDevice9* PDIRECT3DDEVICE9

steh am ende so in irgendnem DirectX-Header ;)
wofür Microsoft das bei Zeigertypen macht...ka...wahrscheinlich gewohnheit, aus Zeiten, wo man zwischen LP und SP unterschied :?

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

3

09.02.2009, 20:50

Ich finde es zwar nicht schlecht, dass es so gemacht wird, weil es das ganze bei mehrfachen Pointer ein wenig übersichtlicher und eindringlicher gestaltet.

4

09.02.2009, 20:53

Zitat von »"drakon"«

Ich finde es zwar nicht schlecht, dass es so gemacht wird, weil es das ganze bei mehrfachen Pointer ein wenig übersichtlicher und eindringlicher gestaltet.

was ist daran übersichtlich einen Pointer zu verstecken?
//EDIT: ist aber mit sicherheit subjektiv, also ncihts, worüber wir jetz diskutieren müssen

idontknow

unregistriert

5

09.02.2009, 21:06

prinzipiel finde ichs auch net schlecht, interessierte mich nur!

eins noch: diese typedefs sind die nicht langsamer? oder sind das quasi nur copy and paste?

aslo das PDIRECT3DDEVICE9 wird durch IDirect3DDevice9* ersetzt??

mfg

6

09.02.2009, 21:13

ja. später, im Maschinencode gibts die Typen sowieso nicht mehr, da wird nur noch unterschieden, wie viel Speicher bearbeitet wird. Die Typiisierung gibts nur innerhalb von C++, hat also (wenn man von ein paar sachen wie virtuellen Funktionen oder dynamic_cast absieht, für die die Typisierung teilweise in den Maschinencode übertragen werden muss) keine Nachteile für die Geschwindigket zur laufzeit. und die paar milisekunden kompilierzeit mehr...wen juckts?

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

7

09.02.2009, 21:30

Zitat von »"PCShadow"«

Zitat von »"drakon"«

Ich finde es zwar nicht schlecht, dass es so gemacht wird, weil es das ganze bei mehrfachen Pointer ein wenig übersichtlicher und eindringlicher gestaltet.

was ist daran übersichtlich einen Pointer zu verstecken?
//EDIT: ist aber mit sicherheit subjektiv, also ncihts, worüber wir jetz diskutieren müssen


Es behandelt Zeiger, wie das, was sie wirklich sind. Typen. Viele haben immer irgendwie das Gefühl, dass Zeiger etwas "spezielles" sind und sich immer anders verhalten, was einfach nicht stimmt. Das kommt sicher zu einem nicht unwesenltlichen Teil von der gewöhnungsbedürftigen Syntax.
Es kommt ja immer mal wieder vor, dass man die Adresse eines Zeigers übergeben muss, damit DX dann da etwas sinnvolles dahinter füllt. Und wenn da jetzt vorher schon irgendwas mit Zeigern stehen würde, hätte dieses Forum hier wahrscheinlich ein paar Tausend Threads mehr, wo dann gefragt wird, warum man den Zeiger da nicht übergeben kann.. (Wo ein Zeiger auf einen Zeiger auf ein Interface gewollt ist)..

Und für das Verständnis der Schnitstelle ist es auch unwesentlich, was das für Typen sind und irgendwelche * würde das ganze nur schwerer lesbar machen.

Anonymous

unregistriert

8

09.02.2009, 21:48

Es gibt keine Performanceunterschiede ob man nun ein typedef benutzt oder nicht. Typedefs sind nur aliase die beim Kompilieren aufgelöst werden und nicht zur Runtime.

9

10.02.2009, 16:30

Zitat von »"drakon"«

Es behandelt Zeiger, wie das, was sie wirklich sind. Typen. Viele haben immer irgendwie das Gefühl, dass Zeiger etwas "spezielles" sind und sich immer anders verhalten, was einfach nicht stimmt.

sie sind etwas besonderes: du kannst sie dereferenzieren, mit ihrem tatsächlichen Wert aber nix anfangen, im gegensatz zu elem. datentypen, wo du mit dem eigentlichen wert was anfangen kannst, und Klassen, die aussagekräftige Member haben. Was die Verwirrung wegen doppelzeigern angeht, hast aber vermtl. recht.

Zitat von »"drakon"«

Und für das Verständnis der Schnitstelle ist es auch unwesentlich, was das für Typen sind und irgendwelche * würde das ganze nur schwerer lesbar machen.

naja, wenn ich sagen würde, ein PDIRECT3DDEVICE9 ist die Schnittstelle, hätt ich leute, die versuchen würden, da ohne dereferenzierung zu arbeiten. und wenn man (was man ja tut) sagt, ein PDIRECT3DDEVICE9 ist ein Zeiger auf eine IDirect3DDevice9, kommt es zu fragen wie diesen hier - ich denke, ganz ohne fragen kommt man so oder so nicht aus ;)

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

10

10.02.2009, 18:38

Zitat von »"PCShadow"«

Zitat von »"drakon"«

Es behandelt Zeiger, wie das, was sie wirklich sind. Typen. Viele haben immer irgendwie das Gefühl, dass Zeiger etwas "spezielles" sind und sich immer anders verhalten, was einfach nicht stimmt.

sie sind etwas besonderes: du kannst sie dereferenzieren, mit ihrem tatsächlichen Wert aber nix anfangen, im gegensatz zu elem. datentypen, wo du mit dem eigentlichen wert was anfangen kannst, und Klassen, die aussagekräftige Member haben. Was die Verwirrung wegen doppelzeigern angeht, hast aber vermtl. recht.


Nein. Zeiger sind ganz normale Datentypen.. Sie brauchen Speicher, haben eine definierte Grösse, haben eine Adresse und einen Wert. Und mit dem Wert kann man sehr viel anfangen, sonst wäre der Sinn von Zeigern ja fragwürdig.. Und klar gibt es gewisse Zückerchen, damit man mit ihnen gut arbeiten kann im Sinne vom Dereferenzierungsoperator und dem -> Operator, aber ich habe von Zeigern als Typen geredet und nicht der Umgang mit ihnen, welcher klar anders ist, aber man kann ja bool und char auch nicht auf diesselbe Art und Weise verwenden.. Sonst würde das ja auch keinen Sinn machen da verschiedene Datentypen zu haben.. (Klar könnte man es, aber das ist weder im Sinne des Erfinders, noch sehr elegant..)

Werbeanzeige