Wenn ich bei dem Struct D3DPRESENT_PARAMETERS
nicht auf das Multesampling verzichte, kann ich die Funktion PDIRECT3D9::CreateDevice
nicht erfolgreich aufrufen.
Bei nicht erfolgreichem Aufruf von PDIRECT3D9::CreateDevice wird eine MessageBox erzeugt.
Was ist der Fehler der dazu führt, dass beim Mulisampling die Funktion PDIRECT3D9::CreateDevice nicht aufrufen kann?
Header der structur, welche directx verwaltet.
|
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
|
#pragma once
#include <d3d9.h>
#include "window.h"
struct d3d
{
PDIRECT3D9 direct3d9p;
PDIRECT3DDEVICE9 adirect3ddevice9p;
D3DPRESENT_PARAMETERS d3dpresent_parameters;
d3d(window *pwindowp);
};
|
Implementierung der structur, die directx verwaltet.
|
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
#include "d3d.h"
d3d::d3d(window *pwindowp){ HRESULT hresult;
direct3d9p=Direct3DCreate9(D3D_SDK_VERSION);
d3dpresent_parameters.AutoDepthStencilFormat=D3DFMT_D24X8;
d3dpresent_parameters.BackBufferCount=1;
d3dpresent_parameters.BackBufferFormat=D3DFMT_A8R8G8B8;
d3dpresent_parameters.BackBufferHeight=pwindowp->ysize;
d3dpresent_parameters.BackBufferWidth=pwindowp->xsize;
d3dpresent_parameters.EnableAutoDepthStencil=true;
d3dpresent_parameters.Flags = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER | D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL;
d3dpresent_parameters.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
d3dpresent_parameters.hDeviceWindow=pwindowp->hwnd;
d3dpresent_parameters.MultiSampleQuality = 4;
d3dpresent_parameters.MultiSampleType = D3DMULTISAMPLE_4_SAMPLES;
d3dpresent_parameters.PresentationInterval = D3DPRESENT_INTERVAL_ONE;
d3dpresent_parameters.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpresent_parameters.Windowed = true;
if(!(SUCCEEDED(hresult=direct3d9p->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,pwindowp->hwnd,D3DCREATE_HARDWARE_VERTEXPROCESSING,&d3dpresent_parameters,&adirect3ddevice9p))))
{
MessageBox(pwindowp->hwnd,"Fehler bei create device","Fehler",MB_OK);
}
}
|