Sleeping Wombat Graphic API
1.010
swGraphicAPI
|
Struktura przechowująca materiał. More...
#include <MeshResources.h>
Public Member Functions | |
RTTR_ENABLE (ResourceObject) | |
MaterialObject (unsigned int id=WRONG_ID) | |
MaterialObject (const MaterialObject *material) | |
void | SetNullMaterial () |
Ustawia materiał na wartości domyślne dla silnika. More... | |
virtual std::string | GetResourceName () const override |
Zwraca nazwę zasobu. To może być nazwa pliku, na podstawie którego stworzono zasób, ale zasadniczo interpretacja jest dowolna. | |
![]() | |
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. | |
Public Attributes | |
friend | ObjectDeleter< MaterialObject > |
DirectX::XMFLOAT4 | Diffuse |
DirectX::XMFLOAT4 | Ambient |
DirectX::XMFLOAT4 | Specular |
DirectX::XMFLOAT4 | Emissive |
float | Power |
Additional Inherited Members | |
![]() | |
virtual | ~ResourceObject ()=default |
Nie każdy może skasować obiekt. | |
Struktura przechowująca materiał.
DirectX 11 nie ma własnych obiektów na materiały, ponieważ nie ma już domyślnego potoku przetwarzania na karcie graficznej. Na wszystko trzeba napisać shader i dostarcza mu się takie dane, jakie się chce dostarczyć. Dlatego informacja o materiałach będzie przekazywana z buforze stałych.
Struktura zachowuje się jak asset w związku z czym może być współdzielona przez wiele obiektów. Z tego względu nie można jej użyć bezpośrednio w ConstantPerMesh, ponieważ nie chcemy przekazywać do bufora stałych zmiennych odziedziczonych po ResourceObject. Zamiast tego trzeba tę strukture przepisać.
Zwracam uwagę, że tylko kanał Diffuse jest wektorem 4 wymiarowym, w którym składowa w jest odpowiedzialna za przezroczystość. Pozostałe są takie tylko dlatego, że jest to domyślny format przechowywania danych w rejestrach karty graficznej i przyspiesza to operację kopiowania.
void MaterialObject::SetNullMaterial | ( | ) |
Ustawia materiał na wartości domyślne dla silnika.
Te wartości są najbardziej neutralne, w przypadku gdy nie ma materiału, a jest ustawiona tekstura. Wtedy shadery wymanażają jasność piksela przez 1.0 i nic sie nie zmienia.