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

1

20.08.2010, 18:06

Multisample unter Direct3D 11

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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

20.08.2010, 18:15

Was wenn du mal keinen D3D11_DEPTH_STENCIL_VIEW_DESC angibst?

3

20.08.2010, 18:22

Wenn ich für den D3D11_DEPTH_STENCIL_VIEW_DESC NULL angebe, dann wird alles normal angezeigt. Ist das etwa so normal?

Mfg Male

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

20.08.2010, 22:15

Nunja ich denk wenn dann müsstest du bei einem Multisampled DepthStencilBuffer auch eine D3D11_DSV_DIMENSION_TEXTURE2DMS angeben. Aber in deinem Fall brauchst du den D3D11_DEPTH_STENCIL_VIEW_DESC sowieso nicht deswegen würd ich ihn einfach auf 0 setzen.

Werbeanzeige