Hallo,
seit einiger Zeit versuche ich das Problem zu lösen, das ich unter Direct3D 11 den Multisample höher als 1 einstellen kann. Wenn ich den Multisample größer als 1 einstelle, wird mir dann das Bild nicht mehr angezeigt, der Hintergrund wird zwar auf die Farbe gelert. Dann ist mir aufgefallen das ich den Multisample von Depth Stencil nicht auf den Multisampe stelle der ausgewählt wurde, sondern immer auf 0. Wenn ich den aber den Multisample Typ zuweise, den ich ausgewählt habe, wird der Depth Stencil nicht mehr erstellt.
So erstelle ich meine Direct3D 11 Device
|
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
|
Desc.BufferCount = 1;
Desc.BufferDesc = Parameters.Display;
Desc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
Desc.OutputWindow = hWnd;
Desc.SampleDesc.Count = Parameters.MultisampleTyp;
Desc.SampleDesc.Quality = Parameters.MultisampleQuali;
Desc.Windowed = Parameters.Windowed;
Desc.SwapEffect = DXGI_SWAP_EFFECT_DISCARD;
// Device erstellen
D3D11_TEXTURE2D_DESC descDepth;
ZeroMemory( &descDepth, sizeof(descDepth) );
descDepth.Width = Parameters.Display.Width;
descDepth.Height = Parameters.Display.Height;
descDepth.MipLevels = 1;
descDepth.ArraySize = 1;
descDepth.Format = DXGI_FORMAT_D24_UNORM_S8_UINT;
descDepth.SampleDesc.Count = Parameters.MultisampleTyp; // Ist größer als 1 wird der Depth Stencil View nicht erstellt
descDepth.SampleDesc.Quality = Parameters.MultisampleQuali;
descDepth.Usage = D3D11_USAGE_DEFAULT;
descDepth.BindFlags = D3D11_BIND_DEPTH_STENCIL;
descDepth.CPUAccessFlags = 0;
descDepth.MiscFlags = 0;
// Depth Stencil Textur erstellen
hr = pDevice->CreateTexture2D(&descDepth, NULL, &pTexturDepth); //<- Textur wird einwandfrei erstellt
D3D11_DEPTH_STENCIL_VIEW_DESC descDSV;
ZeroMemory( &descDSV, sizeof(descDSV) );
descDSV.Format = descDepth.Format;
descDSV.ViewDimension = D3D11_DSV_DIMENSION_TEXTURE2D;
descDSV.Texture2D.MipSlice = 0;
// Depth Stencil View erstellen
hr = pDevice->CreateDepthStencilView(pTexturDepth, &descDSV, &pDepthStencil); // <- Hier tritt der Fehler auf
|
Erstelle ich das Device falsch, oder warum kann ich den Multisample nicht höher stellen? Bei den Sample aus den SDK kann ich den Multisample auch höher stellen ohne das Probleme auftreten.
Vielen Dank im voraus
Mfg male