Sleeping Wombat Graphic API  1.010
swGraphicAPI
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
DX11RenderTarget Class Reference

Implementacja render targetu w DirectX11. More...

#include <dx11rendertarget.h>

Inheritance diagram for DX11RenderTarget:
RenderTargetObject DX11APIObjects IRenderTarget ResourceObject

Public Member Functions

 DX11RenderTarget (ComPtr< ID3D11RenderTargetView > renderTarget, ComPtr< ID3D11DepthStencilView > depthStencil, TextureObject *colorBuffer, TextureObject *depthBuffer, TextureObject *stencilBuffer)
 
uint16 GetWidth ()
 
uint16 GetHeight ()
 
void SetHeight (uint16 value)
 
void SetWidth (uint16 value)
 
ID3D11RenderTargetView * GetRenderTarget ()
 
ID3D11DepthStencilView * GetDepthStencil ()
 
- Public Member Functions inherited from RenderTargetObject
 RenderTargetObject (TextureObject *colorBuffer, TextureObject *depthBuffer, TextureObject *stencilBuffer)
 
virtual ~RenderTargetObject ()
 Destruktor kasuje obiekty tekstury głębokości i bufora koloru, jeżeli nie są używane. Jeżeli istnieją odwołania do tych obiektów, to nie są one kasowane, a jedynie usuwa się odwołania pochodzące od RenderTargetObject.
 
TextureObjectGetColorBuffer ()
 Zwraca obiekt bufora kolorów.
 
TextureObjectGetDepthBuffer ()
 Zwraca obiekt bufora głębokości.
 
TextureObjectGetStencilBuffer ()
 Zwraca obiekt bufora stencilu.
 
virtual std::string GetResourceName () const override
 
- Public Member Functions inherited from ResourceObject
 ResourceObject (int id)
 
void SetID (unsigned int id)
 Ustawia identyfikator obiektu.
 
bool CanDelete (unsigned int &objectRef)
 sprawdza czy można zwolnić zmienną More...
 
bool CanDelete ()
 Funkcja informuje czy obiekt są obiektu, które odwołują się do assetu. More...
 
void AddAssetReference ()
 Dodaje odwołanie plikowe do assetu. More...
 
void AddObjectReference ()
 Dodaje odwołanie bezpośrednie obiektu do assetu.
 
void DeleteAssetReference ()
 Kasuje odwołanie plikowe do assetu.
 
void DeleteObjectReference ()
 Kasuje odwołanie bezpośrednie obiektu do assetu.
 
unsigned int GetID ()
 Zwraca identyfikator nadany assetowi.
 

Static Public Member Functions

static DX11RenderTargetCreateScreenRenderTarget ()
 
static DX11RenderTargetCreateRenderTarget (const std::wstring &name, const RenderTargetDescriptor &renderTargetDescriptor)
 Tworzy render target o podanych w parametrach. More...
 

Protected Member Functions

 ~DX11RenderTarget ()
 Zwalnia zasoby DirectXa.
 
- Protected Member Functions inherited from ResourceObject
virtual ~ResourceObject ()=default
 Nie każdy może skasować obiekt.
 
- Protected Member Functions inherited from DX11APIObjects
void set_swapchain_desc (const DXGI_SWAP_CHAIN_DESC &swap_chain_desc)
 Funkcja ustawia deskryptor dla obiektów Device, DeviceContext i SwapChain DirectXa. More...
 
void set_viewport_desc (const D3D11_VIEWPORT &view_port_desc)
 Funkcja ustawia deskryptor dla Viewportu. Nie jest on ustawiany jako aktywny w DirectX, trzeba wywołać funkcję init_viewport. More...
 
void set_feature_levels (D3D_FEATURE_LEVEL *feature_levels, unsigned int elements)
 ustawia podaną w parametrze tablicę z levelami. Tablica nie powinna zostać usunięta, ponieważ nie jest kopiowana. More...
 
void set_window_resolution (unsigned int window_width, unsigned int window_height)
 
void set_depth_stencil_format (DXGI_FORMAT depth_stencil_format)
 
void set_vertex_layout (DX11_DEFAULT_VERTEX_LAYOUT layout)
 Ustawia jeden z domyślnych deskryptorów layoutów zdefiniowanych w klasie. Funkcja nie ustawia żadnego layoutu w directX. More...
 
void set_vertex_layout (D3D11_INPUT_ELEMENT_DESC *layout, unsigned int array_size)
 Ustawia podany deskryptor layoutu. Funkcja nie ustawia żadnego layoutu w directX. More...
 
void set_sampler_desc (D3D11_SAMPLER_DESC sampler_desc)
 
void set_rasterizer_desc (const D3D11_RASTERIZER_DESC &rasterizer_desc)
 Ustawia podany w parametrze deskrytptor rasteryzatora.
 
ID3D11VertexShader * load_vertex_shader (const std::wstring &file_name, const std::string &shader_name, const char *shader_model)
 Tworzy obiekt VertexShader na podstawie pliku. More...
 
ID3D11VertexShader * load_vertex_shader (const std::wstring &file_name, const std::string &shader_name, ID3D11InputLayout **layout, D3D11_INPUT_ELEMENT_DESC *layout_desc, unsigned int array_size, const char *shader_model)
 Tworzy obiekt vertex shadera na podstawie pliku. Zwraca również layout dla podanej struktury wierzchołka. Nie należy używać tej funkcji, jeżeli layout nie jest rzeczywiście potrzebny. Trzeba pamietać o zwolnieniu go, kiedy przestanie być potrzebny. More...
 
ID3D11PixelShader * load_pixel_shader (const std::wstring &file_name, const std::string &shader_name, const char *shader_model)
 
DX11_INIT_RESULT InitDevicesAndSwapChain (HWND window, bool fullscreen, bool single_thread=true)
 Tworzy obiekty swap_chain, device i device_context. More...
 
DX11_INIT_RESULT init_viewport ()
 Ustawia viewport zgodny z aktualnie ustawionym deskryptorem.
 
DX11_INIT_RESULT init_z_buffer_and_render_target ()
 Funkcja tworzy z-bufffer oraz pobiera tylny bufor i tworzy z niego render target. Następnie widok z bufora i widok tylnego bufora są ustawione jako cel dla funkcji renderujących renderowania. More...
 
DX11_INIT_RESULT init_vertex_shader (const std::wstring &file_name, const std::string &shader_name)
 Funkcja tworzy shader na podstawie podanego pliku, kompiluje go, a potem obudowuje klasą będącą interfejsem shadera. Parametr shader_name oznacza nazwę funkcji, od której zaczyna się wykonanie kodu shadera. More...
 
DX11_INIT_RESULT init_pixel_shader (const std::wstring &file_name, const std::string &shader_name)
 Funkcja tworzy shader na podstawie podanego pliku, kompiluje go, a potem obudowuje klasą będącą interfejsem shadera. Parametr shader_name oznacza nazwę funkcji, od której zaczyna się wykonanie kodu shadera. More...
 
DX11_INIT_RESULT init_sampler ()
 Tworzy domyślny smapler. More...
 
DX11_INIT_RESULT init_DX11 (int width, int height, HWND window, bool fullscreen, const std::wstring &pix_shader_file, const std::string &pix_shader_name, const std::wstring &vert_shader_file, const std::string &vert_shader_name, bool single_thread=true)
 Funkcja do pełnej inicjalizacji DirectXa. More...
 
DX11_INIT_RESULT init_DX11 (int width, int height, HWND window, bool fullscreen, bool single_thread=true)
 Funkcja do pełnej inicjalizacji DirectXa. More...
 
virtual void release_DirectX ()
 Zwalnia wszystkie stworzone obiekty DirectXa.
 
void begin_scene ()
 Czyścimy tylny bufor oraz z-bufor i wywołujemy funcję inicjującą renderowanie. More...
 
void end_scene_and_present ()
 Wywołuje funkcję swap_chain->Present w celu wyświetlenia narysowanej sceny na monitorze.
 
void SetDebugName (ID3D11DeviceChild *child, const std::string &name)
 
bool IsDebugLayerEnabled ()
 

Private Member Functions

 RTTR_ENABLE (RenderTargetObject)
 

Static Private Member Functions

static bool ValidateDescriptor (const RenderTargetDescriptor &renderTargetDescriptor)
 

Private Attributes

ComPtr< ID3D11RenderTargetView > m_renderTarget
 
ComPtr< ID3D11DepthStencilView > m_depthStencilView
 
uint16 m_height
 
uint16 m_width
 

Additional Inherited Members

- Static Protected Member Functions inherited from DX11APIObjects
static DXGI_SWAP_CHAIN_DESC get_swap_chain_desc ()
 
static D3D11_VIEWPORT get_viewport_desc ()
 
static D3D_FEATURE_LEVEL get_current_feature_level ()
 
static D3D11_TEXTURE2D_DESC get_z_buffer_desc ()
 
static D3D11_DEPTH_STENCIL_VIEW_DESC get_z_buffer_view_desc ()
 
static D3D11_SAMPLER_DESC get_sampler_desc ()
 
static D3D11_RASTERIZER_DESC get_rasterizer_desc ()
 
- Protected Attributes inherited from RenderTargetObject
ResourcePtr< TextureObjectm_colorBuffer
 Pozwala na dostęp do bufora kolorów dla innych obiektów. Może być nullptrem.
 
ResourcePtr< TextureObjectm_depthBuffer
 Pozwala na dostęp do bufora głębokości. Może być nullptrem.
 
ResourcePtr< TextureObjectm_stencilBuffer
 Pozwala na dostęp do bufora stencil. Może być nulltrem.
 
- Static Protected Attributes inherited from DX11APIObjects
static DX11APIObjectsthis_ptr = nullptr
 Ważne, żeby nie zainicjowac obiektu wielokrotnie. More...
 
static bool m_useDebugLayer = false
 
static unsigned int _window_width = 1024
 
static unsigned int _window_height = 768
 
static std::string _pixel_shader_model = "ps_4_0"
 
static std::string _vertex_shader_model = "vs_4_0"
 
static DXGI_SWAP_CHAIN_DESC _swap_chain_desc
 Domyślny deskryptor głównych obiektów DirectX11.
 
static D3D11_VIEWPORT _view_port_desc
 Domyślny deskryptor viewportu. Jeżeli użytkownik poda własny to zostanie on nadpisany.
 
static D3D_FEATURE_LEVEL * _feature_levels = nullptr
 Tablica z preferowanymi poziomami DirectX. Domyślnie nullptr, uzytkownik może zdefiniować.
 
static unsigned int _num_feature_levels = 0
 Liczba elementów powyższej tablicy.
 
static D3D_FEATURE_LEVEL _current_feature_level
 Przechowuje poziom DirectXa.
 
static D3D11_TEXTURE2D_DESC _z_buffer_desc
 Deskryptor z i stencil bufora.
 
static D3D11_DEPTH_STENCIL_VIEW_DESC _z_buffer_view_desc
 Deskryptor widoku z i stencil bufora.
 
static D3D11_INPUT_ELEMENT_DESC * _vertex_layout_desc = nullptr
 Aktualny deskryptor layoutu wierzchołka.
 
static unsigned int _layout_elements_count = 0
 Liczba elementów w talicy deskryptora layoutu.
 
static D3D11_SAMPLER_DESC _sampler_desc
 Deskryptor samplera.
 
static D3D11_RASTERIZER_DESC _rasterizer_desc
 Deskryptor rasteryzatora.
 
static ID3D11Debug * debug_interface = nullptr
 Pozwala na pobranie bardziej szczegółowych informacji debugowych.
 
static ID3D11Device * device = nullptr
 Zmienna służy do tworzenia obiektów, buforów tekstur i zasobów.
 
static ID3D11DeviceContext * device_context = nullptr
 Zmienna używana do renderowania sceny, ustawiania buforów, shaderów itp.
 
static IDXGISwapChain * swap_chain = nullptr
 Służy do prezentowania ramki na ekranie.
 
static ID3D11RenderTargetView * render_target = nullptr
 Widok bufora docelowego renderowania, czyli bufora tylnego.
 
static ID3D11DepthStencilView * z_buffer_view = nullptr
 Widok z-buffora.
 
static ID3D11Texture2D * back_buffer = nullptr
 Tekstura bufora tylnego.
 
static ID3D11Texture2D * z_buffer = nullptr
 Tekstura z-bufora.
 
static ID3D11SamplerState * default_sampler = nullptr
 Obiekt domyślnego samplera.
 
static ID3D11InputLayout * default_vertex_layout = nullptr
 Layout formatu wierzchołka używanego dla meshy.
 
static ID3D11VertexShader * default_vertex_shader = nullptr
 Obiekt domyślnego vertex shadera.
 
static ID3D11PixelShader * default_pixel_shader = nullptr
 Obiekt domyślnego piksel shadera.
 

Detailed Description

Implementacja render targetu w DirectX11.

Member Function Documentation

DX11RenderTarget * DX11RenderTarget::CreateRenderTarget ( const std::wstring &  name,
const RenderTargetDescriptor renderTargetDescriptor 
)
static

Tworzy render target o podanych w parametrach.

Todo:
W przyszłości powinna być możliwość tworzenia tekstur innych niż 2D. Poza tym renderować powinno się móc do dowolnego poziomu mipmap. Decyzja powinna być podejmowana w runtimie, więc trzeba chyba stworzyć wiele widoków (???). Przydatne to jest w przypadku Environmental mappingu. Jeżeli obiekt jest mocno oddalony, to nie ma co renderować mu mapy z dużą rozdzielczością.
Returns
Zwraca render target lub nullptr, jeżeli tworzenie nie powiodło się lub podano niepoprawne parametry.
DX11RenderTarget * DX11RenderTarget::CreateScreenRenderTarget ( )
static

Tworzy object DX11RenderTarget z bufora tylnego ekranu.

Todo:
Wersja troszkę niewłaściwa. RenderTarget jest już stworzony wcześniej przy zwykłej inicjalizacji DX11APIObjects. Tutaj jest jedynie tworzony obiekt silnikowy, który potrafi to obsłużyć. Trzeba to zmienić, żeby całe tworzenie render targetu odbywało się tutaj.
Note
Wewnętrzne tekstury render targetu są ustawione na nullptr. Oznacza to, że nie można ich użyć w innych obiektach. Zastanowić się czy to właściwe rozwiązanie i ewentualnie zmienić implementację.
Returns
Zwraca wskaźnik object DX11RenderTarget.

The documentation for this class was generated from the following files: