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

21

26.10.2003, 18:43

häää?

und wie setzt man das aus deinem vorherigen beitrag da rein??
(Oh mein gott..... ich kapier hier garnix :crying: ... naja vielleicht liegts ja an mir ;) )

aber kann man das(die art es so zu machen) irgendwo nachlesen?


mfg
Bobba

22

26.10.2003, 22:14

Schau halt mal ein bischen genauer hin! Ob nun deine Klasse oder meine. Da ist nicht wircklich ein Unterschied.

Schau her:

Quellcode

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
33
class Device 
{ 
  static IDirect3DDevice9* m_pD3DDev; 

public:
  void Render();

  static IDirect3DDevice9* GetD3DDev() { return m_pD3DDev; } 
}; 

inline IDirect3DDevice9* D3DDev() { return Device::GetD3DDev() }

void Device::Render()
{
  m_pD3DDev->BeginScene();

  // Render irgendwas

  m_pD3DDev->EndScene();
  m_pD3DDev->Present(0, 0, 0, 0);
}

// Benutztung von außen 
void ExternRender(Device& d3d) 
{ 
  // Hier wird dein D3D Device von außen Benutzt. (alt)
  // d3d.ReturnD3DDevice()->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xFF000000, 1.0f, 0);

  // (neu) Da ich mit Statik Variablen Arbeite brauche ich den Parameter d3d hier nicht
  D3DDev()->Clear(0, 0, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xFF000000, 1.0f, 0);

  d3d.Render(); 
}

Was hat sich geendert. Für die Internen Aufruf hat nichts. Alles beim alten. Für den Externen Aufruf nur ein bisschen. Da die Get-Methode des D3D Devices static ist und die Member Variable des D3D Devices ebenfalls static ist, kann ich es einfach so schreiben wie ich es oben gemacht habe.

Schau dir beide Beispiele an und du wirst feststellen das sich eigentlich nichts wesentliches geendert hat. Die Klasse sehen ein wenig anders aus und wurden anderes benannt, aber daran sollte man sich nicht stören.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

23

27.10.2003, 12:23

Zitat von »"Patrick"«

@_progger_
Womit wird denn nun bitte eine engine gekapselt? na klingelts? ;D


Juchu, hab nochmal ein Internetcafe gefunden. (sorry; franzoesische tastatur)

Ich finde, eine Klasse sollte nur benutzt werden, wenn mann einen neuen Datentyp braucht bzw. die integralen Datentypen nicht ausreichen, zB eine Texturklasse zum speichern einer Textur.
Aber das was ihr da die ganze Zeit baut, ist kein neuer Datentyp (class Device und class CDirect3D)
Ich finde man sollte sowas in einem namespace-Modul (ich sag jetzt halt mal auch kapseln) kapseln.

So siehts in der Engine aus:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//device.h
namespace Device
{
    IDirect3DDevice9* GetD3DDev();
    //...
}

-------------------------------------------------------------------------------------
//device_impl.h
namespace Device
{
    IDirect3DDevice9* m_pD3DDev;
}

------------------------------------------------------------------------------------
//device.cpp
#include "device.h"
#include "device_impl.h"

Device::IDirect3DDevice9* GetD3DDev()
{
    return m_pD3DDev;
}


Und ums dann in deinem spiel benutzen zu koennen bindest du nur device.h ein. Damit ist fuer dich nur Device::GetD3DDev() sichtbar.
Ein Gespenst geht um in Europa...

unsigned int

Alter Hase

Beiträge: 512

Wohnort: Bonn

Beruf: Schüler; C#-Programmierer in einer kleinen Firma

  • Private Nachricht senden

24

27.10.2003, 13:52

Hi,

kann nochmal jmd kurz erklären, was Namespaces genau sind? Ich habe ne Ahnung, bin mir aber nicht sicher:

Ist das sozusagen ein "Nachname" für alles im Namespace?

Bin momentan leicht begriffsstutzig ???
"Tu es. Oder tu es nicht. Es gibt kein Versuchen."
StarWars

www.tron2d.de.vu

25

27.10.2003, 17:30

ahhhhhhh :)

ich beginne zu verstehen!!!!!


also nicht erst eine instanz der Deviceklasse erstellen und dann über die instanz rendern sondern mit diesem "&" eine externe funktion ...

richtig oder???

26

28.10.2003, 21:41

war zwar schwachsinn was is gerade gesagt habe... aber egal!!!!!

AHHHHHH :crying:

das funzt nich!!!!!

der schreibt irgendwas mit unaufgelösten externen verweisen!!!!

das is ja zum :kotz:

HILFÄÄÄÄÄÄÄÄÄÄÄÄÄ :help:

Werbeanzeige