2010-09-21 16 views
5

Nie widzę RenderState jako członka w klasie GraphicsDevice, gdzie były używane funkcje wyłączania bufora głębi. Ktoś wie, jak to się robi z tym nowym API 4.0?Jak wyłączyć bufor głębi?

Byłoby wspaniale, gdybym mógł jakoś uzyskać dostęp do pełnej klasy RenderState gdzieś .. GraphicsDevice wydaje się, że dostałem trochę tego, ale nie prawie wszystkie!

Odpowiedz

2

Ah .. Ustawię GraphicsDevice.DepthStencilState na instancję DepthStencilState z dowolną liczbą ustawionych właściwości. Wygląda na to, że RenderState został podzielony na kilka innych stanów. Już wcześniej szukałem w poszczególnych właściwościach wewnątrz GraphicsDevice, ale teraz wydają się lepiej zorganizowane, aby łatwiej było zarządzać państwem.

depthState = new DepthStencilState(); 
depthState.DepthBufferEnable = true; /* Enable the depth buffer */ 
depthState.DepthBufferWriteEnable = true; /* When drawing to the screen, write to the depth buffer */ 

GraphicsDevice.DepthStencilState = depthState; 
+1

Tak. Ale upewnij się, że tworzysz obiekty stanu raz (nie w twojej metodzie rysowania). Czytaj Shawna, aby uzyskać więcej informacji http://blogs.msdn.com/b/shawnhar/archive/2010/04/02/state-objects-in-xna-game-studio-4-0.aspx. – Empyrean

+1

Należy również pamiętać, że istnieje wiele gotowych obiektów stanu, które obejmują wiele typowych scenariuszy. W takim przypadku możesz użyć DepthStencilState.None, aby wyłączyć buforowanie głębi, oraz DepthStencilState.Default, aby włączyć zapisywanie (jak w twoim przykładzie tutaj). –