Guten Morgen meine Freunde,
ich habe ein kleines Problem, ich habe diese (noch nicht fertige) klasse:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
class NE_EXPORT CDirect3D : public CEngine
{
private:
CDirect3D(){}
static CDirect3D* instance;
LPDIRECT3D9 direct3d;
LPDIRECT3DDEVICE9 d3ddevice;
D3DPRESENT_PARAMETERS d3dpp;
public:
static CDirect3D* Instance();
neResult Create(sConfig* config, HWND hWnd);
};
|
dazu gehört jetzt diese cpp datei:
|
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
33
34
35
36
37
38
39
40
41
42
43
44
|
#include "neCDirect3D.h"
CDirect3D* CDirect3D::Instance()
{
if(instance == NULL) instance = new CDirect3D();
return instance;
}
neResult CDirect3D::Create(sConfig* config, HWND hWnd)
{
HRESULT r;
direct3d = Direct3DCreate9(D3D_SDK_VERSION);
if(direct3d == NULL)
{
EngineLog.WriteBadPointer("d3d");
return NE_D3DERROR;
}
ZeroMemory(&d3dpp, sizeof(D3DPRESENT_PARAMETERS));
d3dpp.BackBufferWidth = config->d3d.d3dpm.Width;
d3dpp.BackBufferHeight = config->d3d.d3dpm.Height;
d3dpp.BackBufferFormat = config->d3d.d3dpm.Format;
d3dpp.BackBufferCount = 1;
d3dpp.MultiSampleType = config->d3d.mstype;
d3dpp.MultiSampleQuality = config->d3d.msquality;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.hDeviceWindow = hWnd;
d3dpp.Windowed = config->d3d.windowmode;
d3dpp.EnableAutoDepthStencil = false;
d3dpp.AutoDepthStencilFormat = config->d3d.zstencilformat;
d3dpp.Flags = 0;
d3dpp.FullScreen_RefreshRateInHz = config->d3d.d3dpm.RefreshRate;
d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
r = direct3d->CreateDevice(config->d3d.adapter, config->d3d.devicetype, hWnd, 0, &d3dpp, &d3ddevice);
if(FAILED(r)) EngineLog.WriteStringToLog("D3DDevice could not be created", NELOG_ERROR);
return NE_OK;
}
CDirect3D* CDirect3D::instance = NULL;
|
aus irgendeinem mir gerade nicht verständlichen Grund kann ich bei den Definition der Create Methode nicht auf die Membervariablen der Klasse zugreifen.
Diese Zeile:
|
C-/C++-Quelltext
|
1
|
direct3d = Direct3DCreate9(D3D_SDK_VERSION);
|
bewirkt, dass ich beim ausführen des Programms die Meldung bekomme, dass an der Stelle 0x00000004 nicht geschrieben werden kann.
Ich stehe gerade irgendwie auf dem Schlauch kann das?