Sleeping Wombat Graphic API  1.010
swGraphicAPI
Todo List
Member DX11Buffer::CopyData () override
Nie trzeba by wykonywać kopiowania na GPU, gdyby bufor był stworzony z flagą D3D11_USAGE_STAGING lub D3D11_USAGE_DEFAULT. Trzeba sprawdzić flagi i robić kopiowanie tylko, gdy to konieczne.
Member DX11RenderTarget::CreateRenderTarget (const std::wstring &name, const RenderTargetDescriptor &renderTargetDescriptor)
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ą.
Member DX11RenderTarget::CreateScreenRenderTarget ()
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.
Member DX11SwapChain::CreateScreenSwapChain (RenderTargetObject *screenRT)
Wersja troszkę niewłaściwa. SwapChain 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.
Member DX11Texture::CreateFromMemory (const MemoryChunk &texData, TextureInfo &&texInfo)
Trzeba zacząć kiedyś obśługiwac inne typy tekstur.
Member DX11VertexShader::CreateFromFile (const std::wstring &fileName, const std::string &shaderName, ShaderInputLayout **layout, InputLayoutDescriptor *layout_desc, const char *shaderModel="vs_4_0")
Lepiej obsłużyć ten błąd.
Member RenderTargetObject::GetResourceName () const override
RenderTargety powinny mieć swoje nazwy.
Class ResourceContainer< TYPE >

Dodać IDki obok ścieżek.

Kontrner powinien obsługiwać ścieżki, jako obiekty typu Path zamiast wstringów.

Class ResourceManager
This class should implement generic high level asssets managment.
Member ResourceManager::AddRenderTarget (RenderTargetObject *renderTarget, const std::wstring &name)
Nie może tak zostać, że ktoś dodaje renderTarget i musi sprawdzić czy nie dostał innego. Nie można też zmuszać kogoś do zwalniania pamięci po renderTargecie. Wogóle dodawanie renderTargetów musi się odbywać jakoś inaczej. Najlepiej, żeby były one tworzone przez ResourceManager, ale wtedy trzeba wymyśleć sposób dodawania renderTargetu związanego z buforem okna.
Member ResourceManager::CreateRenderTarget (const std::wstring &name, const RenderTargetDescriptor &renderTargetDescriptor)
Przy dodawaniu tekstur nie jest sprawdzane czy one już istnieją. Trzeba albo to sprawdzać, albo zapewnić np. jakąś polityką nazewnictwa, że w ten sposób nie nadpisujemy istniejącej tekstury.
Member ResourceManager::LoadVertexShader (const std::wstring &fileName, const std::string &shaderEntry, ShaderInputLayout **layout, InputLayoutDescriptor *layout_desc)
Ten kod to jakiś totalny shit. Jak komuś się będzie nudziło kiedyś (ha ha), to może niech poprawi.
Class ResourceObject
Zliczanie referencji w ResourceObject nie nadaje się do wielowątkowości. Poprawić w odpowiednim momencie.
Member ResourceObject::m_objectReferences
To powinien być std::atomic_uint, ale wtedy nie kompiluje się z CLRem.