Sleeping Wombat GUI
0.100
swGUI
|
Klasa przechowuje w zmiennych statycznych najważniejsze interfejsy DirectX11. More...
#include <DX11APIObjects.h>
Protected Member Functions | |
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. More... | |
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. More... | |
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... | |
DX11APIObjects () | |
~DX11APIObjects ()=default | |
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. More... | |
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. More... | |
void | SetDebugName (ID3D11DeviceChild *child, const std::string &name) |
bool | IsDebugLayerEnabled () |
Static Protected Member Functions | |
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 () |
Static Protected Attributes | |
static DX11APIObjects * | this_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. More... | |
static D3D11_VIEWPORT | _view_port_desc |
Domyślny deskryptor viewportu. Jeżeli użytkownik poda własny to zostanie on nadpisany. More... | |
static D3D_FEATURE_LEVEL * | _feature_levels = nullptr |
Tablica z preferowanymi poziomami DirectX. Domyślnie nullptr, uzytkownik może zdefiniować. More... | |
static unsigned int | _num_feature_levels = 0 |
Liczba elementów powyższej tablicy. More... | |
static D3D_FEATURE_LEVEL | _current_feature_level |
Przechowuje poziom DirectXa. More... | |
static D3D11_TEXTURE2D_DESC | _z_buffer_desc |
Deskryptor z i stencil bufora. More... | |
static D3D11_DEPTH_STENCIL_VIEW_DESC | _z_buffer_view_desc |
Deskryptor widoku z i stencil bufora. More... | |
static D3D11_INPUT_ELEMENT_DESC * | _vertex_layout_desc = nullptr |
Aktualny deskryptor layoutu wierzchołka. More... | |
static unsigned int | _layout_elements_count = 0 |
Liczba elementów w talicy deskryptora layoutu. More... | |
static D3D11_SAMPLER_DESC | _sampler_desc |
Deskryptor samplera. More... | |
static D3D11_RASTERIZER_DESC | _rasterizer_desc |
Deskryptor rasteryzatora. More... | |
static ID3D11Debug * | debug_interface = nullptr |
Pozwala na pobranie bardziej szczegółowych informacji debugowych. More... | |
static ID3D11Device * | device = nullptr |
Zmienna służy do tworzenia obiektów, buforów tekstur i zasobów. More... | |
static ID3D11DeviceContext * | device_context = nullptr |
Zmienna używana do renderowania sceny, ustawiania buforów, shaderów itp. More... | |
static IDXGISwapChain * | swap_chain = nullptr |
Służy do prezentowania ramki na ekranie. More... | |
static ID3D11RenderTargetView * | render_target = nullptr |
Widok bufora docelowego renderowania, czyli bufora tylnego. More... | |
static ID3D11DepthStencilView * | z_buffer_view = nullptr |
Widok z-buffora. More... | |
static ID3D11Texture2D * | back_buffer = nullptr |
Tekstura bufora tylnego. More... | |
static ID3D11Texture2D * | z_buffer = nullptr |
Tekstura z-bufora. More... | |
static ID3D11SamplerState * | default_sampler = nullptr |
Obiekt domyślnego samplera. More... | |
static ID3D11InputLayout * | default_vertex_layout = nullptr |
Layout formatu wierzchołka używanego dla meshy. More... | |
static ID3D11VertexShader * | default_vertex_shader = nullptr |
Obiekt domyślnego vertex shadera. More... | |
static ID3D11PixelShader * | default_pixel_shader = nullptr |
Obiekt domyślnego piksel shadera. More... | |
Klasa przechowuje w zmiennych statycznych najważniejsze interfejsy DirectX11.
Obiekty, które ich potrzebują, powinny odziedziczyć po tej klasie, dzięki czemu mają bezpośredni dostęp.
Aby najłatwiej zainicjować DirectX, najlepiej jest wywołać funkcję init_DX11. Z wyjątkiem rzeczy podawanych w parametrach, wszystko zostanie zainicjowane zgodnie z deskryptorami domyślnymi. Jeżeli chcesz coś zmienić, to musisz to zrobić przed wywołaniem tej funkcji.
Można też inicjować każdą rzecz z osobna, ale w zasadzie nie ma to większego sensu, skoro wiszystkie deskryptory można zmodyfikować.
Klasa daje też możliwość kompilowania shaderów.
|
protected |
|
protecteddefault |
|
protected |
Czyścimy tylny bufor oraz z-bufor i wywołujemy funcję inicjującą renderowanie.
|
inlineprotected |
Wywołuje funkcję swap_chain->Present w celu wyświetlenia narysowanej sceny na monitorze.
|
inlinestaticprotected |
|
inlinestaticprotected |
|
inlinestaticprotected |
|
inlinestaticprotected |
|
inlinestaticprotected |
|
inlinestaticprotected |
|
inlinestaticprotected |
|
protected |
Funkcja do pełnej inicjalizacji DirectXa.
Jeżeli chcesz zainicjować wszystko na raz, to wywołaj tę funkcję. Przed wywołaniem ustaw odpowiednie deskryptory, jeżeli chcesz, żeby użyte zostały inne wartości niż domyślne.
[in] | width | Szerokość okna. |
[in] | height | Wysokość okna. |
[in] | window | Uchwyt głównego okna aplikacji. |
[in] | fullscreen | Ustaw na true, jeżeli aplikacja ma działać w trybie pełnoekranowym. |
[in] | pix_shader_file | Plik zawierający shader. |
[in] | pix_shader_name | Nazwa funkcji, od której ma się zacząć wykonywanie shadera. |
[in] | vert_shader_file | Plik zawierający shader. |
[in] | vert_shader_name | Nazwa funkcji, od której ma się zacząć wykonywanie shadera. |
[in] | singleThread | Ustaw na true, jeżeli nie zamierzasz korzystać z ID3D11Device wielowątkowo (pozwala to na przyspieszenie działania ze względu na to, że nie jest konieczna synchronizacja. Nie wiem jak duży to ma wpływ.) |
|
protected |
Funkcja do pełnej inicjalizacji DirectXa.
Jeżeli chcesz zainicjować wszystko na raz, to wywołaj tę funkcję. Przed wywołaniem ustaw odpowiednie deskryptory, jeżeli chcesz, żeby użyte zostały inne wartości niż domyślne.
Funkcja nie inicjuje shaderów, nie tworzy layoutu wierzchołka ani nie ustawia samplera.
[in] | width | Szerokość okna. |
[in] | height | Wysokość okna. |
[in] | window | Uchwyt głównego okna aplikacji. |
[in] | fullscreen | Ustaw na true, jeżeli aplikacja ma działać w trybie pełnoekranowym. |
[in] | singleThread | Ustaw na true, jeżeli nie zamierzasz korzystać z ID3D11Device wielowątkowo (pozwala to na przyspieszenie działania ze względu na to, że nie jest konieczna synchronizacja. Nie wiem jak duży to ma wpływ.) |
|
protected |
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.
Poza tworzeniem domyślnego shadera, funkcja tworzy domyślny sampler. W trybie debug komunikaty kompilacji shadera są przekazywane do okna output.
Funkcja ustawia ten shader i sampler w kontekście urządzenia jako aktywny.
[in] | file_name | Nazwa pliku zawierającego shader. |
[in] | shader_name | Nazwa shadera. |
|
protected |
Tworzy domyślny smapler.
|
protected |
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.
Funkcja ustawia shader oraz layout wierzchołków w kontekście urządzenia jako aktywny. W trybie debug komunikaty kompilacji shadera są przekazywane do okna output.
[in] | file_name | Nazwa pliku zawierającego shader. |
[in] | shader_name | Nazwa shadera. |
|
protected |
Ustawia viewport zgodny z aktualnie ustawionym deskryptorem.
|
protected |
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.
|
protected |
Tworzy obiekty swap_chain, device i device_context.
[in] | width | Szerokość ekranu w pikselach |
[in] | height | Wysokość ekranu w pikselach |
[in] | window | Uchwyt okna, w którym renderujemy |
[in] | fullscreen | Tryb pełnoekranowy lub w oknie. |
[in] | singleThread | Ustawić na true, jeżeli mamy tylko jeden wątek, który tworzy wszystkie obiekty DirectXa typu bufory i shadery. Domyślnie false. |
|
protected |
|
protected |
Tworzy pixel shader na podstawie pliku.
W przypadku błędów kompilacji w trybie debug są one przekierowane do okna Output.
Na razie obsługuje tylko nieskompilowane pliki.
[in] | file_name | Nazwa pliku, z którego zostanie wczytany shader |
[in] | shader_name | Nazwa funkcji, która jest punktem poczatkowym wykonania shadera |
[in] | shader_model | Łańcuch znaków opisujący shader model. |
|
protected |
Tworzy obiekt VertexShader na podstawie pliku.
W przypadku błędów kompilacji w trybie debug są one przekierowane do okna Output.
Na razie obsługuje tylko nieskompilowane pliki.
[in] | file_name | Nazwa pliku, z którego zostanie wczytany shader. |
[in] | shader_name | Nazwa funkcji, która jest punktem poczatkowym wykonania shadera. |
[in] | shader_model | Łańcuch znaków opisujący shader model. |
|
protected |
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.
W przypadku błędów kompilacji w trybie debug są one przekierowane do okna Output.
Na razie obsługuje tylko nieskompilowane pliki.
[in] | file_name | Nazwa pliku, z którego zostanie wczytany shader |
[in] | shader_name | Nazwa funkcji, która jest punktem poczatkowym wykonania shadera |
[out] | layout | W zmiennej umieszczany jest wskaźnik na layout wierzchołka. Należy pamiętać o zwolnieniu go kiedy będzie niepotrzebny. |
[in] | layout_desc | Deskryptor opisujacy tworzony layout. |
[in] | array_size | Liczba elementów tablicy layout_desc. |
[in] | shader_model | Łańcuch znaków opisujący shader model. |
|
protectedvirtual |
Zwalnia wszystkie stworzone obiekty DirectXa.
Reimplemented in DX11AuxiliaryObjects.
|
protected |
|
protected |
ustawia podaną w parametrze tablicę z levelami. Tablica nie powinna zostać usunięta, ponieważ nie jest kopiowana.
Jeżeli nic nie zostanie ustawione to domyślne ustawiana jest wartość nullptr, co jest równoważne podaniu następującej tablicy: D3D_FEATURE_LEVEL_11_0, D3D_FEATURE_LEVEL_10_1, D3D_FEATURE_LEVEL_10_0, D3D_FEATURE_LEVEL_9_3, D3D_FEATURE_LEVEL_9_2, D3D_FEATURE_LEVEL_9_1,
Zasadniczo lepiej nie modyfikować tego parametru, jeżeli nie ma takiej konieczności.
[in] | elements | Liczba elementów w tablicy. |
|
protected |
Ustawia podany w parametrze deskrytptor rasteryzatora.
|
protected |
Ustawia podany w parametrze deskryptor samplera.
|
protected |
Funkcja ustawia deskryptor dla obiektów Device, DeviceContext i SwapChain DirectXa.
Wartości takich pól jak:
|
protected |
Ustawia jeden z domyślnych deskryptorów layoutów zdefiniowanych w klasie. Funkcja nie ustawia żadnego layoutu w directX.
|
protected |
Ustawia podany deskryptor layoutu. Funkcja nie ustawia żadnego layoutu w directX.
|
protected |
Funkcja ustawia deskryptor dla Viewportu. Nie jest on ustawiany jako aktywny w DirectX, trzeba wywołać funkcję init_viewport.
Wartości takich pól jak:
|
protected |
|
protected |
|
staticprotected |
Przechowuje poziom DirectXa.
|
staticprotected |
Tablica z preferowanymi poziomami DirectX. Domyślnie nullptr, uzytkownik może zdefiniować.
|
staticprotected |
Liczba elementów w talicy deskryptora layoutu.
|
staticprotected |
Liczba elementów powyższej tablicy.
|
staticprotected |
|
staticprotected |
Deskryptor rasteryzatora.
|
staticprotected |
Deskryptor samplera.
|
staticprotected |
Domyślny deskryptor głównych obiektów DirectX11.
|
staticprotected |
Aktualny deskryptor layoutu wierzchołka.
|
staticprotected |
|
staticprotected |
Domyślny deskryptor viewportu. Jeżeli użytkownik poda własny to zostanie on nadpisany.
|
staticprotected |
|
staticprotected |
|
staticprotected |
Deskryptor z i stencil bufora.
|
staticprotected |
Deskryptor widoku z i stencil bufora.
|
staticprotected |
Tekstura bufora tylnego.
|
staticprotected |
Pozwala na pobranie bardziej szczegółowych informacji debugowych.
|
staticprotected |
Obiekt domyślnego piksel shadera.
|
staticprotected |
Obiekt domyślnego samplera.
|
staticprotected |
Layout formatu wierzchołka używanego dla meshy.
|
staticprotected |
Obiekt domyślnego vertex shadera.
|
staticprotected |
Zmienna służy do tworzenia obiektów, buforów tekstur i zasobów.
|
staticprotected |
Zmienna używana do renderowania sceny, ustawiania buforów, shaderów itp.
|
staticprotected |
|
staticprotected |
Widok bufora docelowego renderowania, czyli bufora tylnego.
|
staticprotected |
Służy do prezentowania ramki na ekranie.
|
staticprotected |
Ważne, żeby nie zainicjowac obiektu wielokrotnie.
Wskaźnik na klasę lub nullptr jeżeli nie został stworzony jeszcze obiekt.
Ta klasa nie zawiera żadnych zmiennych niestatycznych, ale chcemy wiedzieć czy został stworzony chociaż jeden obiekt. Dzięki temu możemy zainicjować deskryptory domyślnymi wartościami w wygodny sposób w konstruktorze.
|
staticprotected |
Tekstura z-bufora.
|
staticprotected |
Widok z-buffora.