void TextureLib::InitInstance(ID3D11Device* device) { s_Inst = new TextureLib(); Imple* pImple = s_Inst->m_pImple; pImple->m_defaultTextures[TextureType::DIFFUSE] = CreateCheckerboardTexture2D(device, 128, 128, 0xFF404040, 0xFF808080, false, true); pImple->m_defaultTextures[TextureType::DIFFUSE]->SetTextureType(TextureType::DIFFUSE); pImple->m_defaultTextures[TextureType::Cubemap] = CreateCheckerboardTexture2D(device, 128, 128, 0xff000040, 0xff000080, true); pImple->m_defaultTextures[TextureType::Cubemap]->SetTextureType(TextureType::Cubemap); pImple->m_defaultTextures[TextureType::NORMAL] = CreateSolidTexture2D(device, 8, 8, 0xFFFF8080); pImple->m_defaultTextures[TextureType::NORMAL]->SetTextureType(TextureType::NORMAL); pImple->m_defaultTextures[TextureType::LIGHT] = CreateSolidTexture2D(device, 8, 8, 0xFFFFFFFF); pImple->m_defaultTextures[TextureType::LIGHT]->SetTextureType(TextureType::LIGHT); pImple->m_defaultTextures[TextureType::SPEC] = CreateSolidTexture2D(device, 8, 8, 0xFF000000); pImple->m_defaultTextures[TextureType::SPEC]->SetTextureType(TextureType::SPEC); pImple->m_defaultTextures[TextureType::BlankMask] = CreateSolidTexture2D(device, 4, 4, 0x00); pImple->m_defaultTextures[TextureType::BlankMask]->SetTextureType(TextureType::BlankMask); pImple->m_defaultTextures[TextureType::FullMask] = CreateSolidTexture2D(device, 4, 4, 0xFFFFFFFF); pImple->m_defaultTextures[TextureType::FullMask]->SetTextureType(TextureType::FullMask); pImple->m_whiteTexture = CreateSolidTexture2D(device, 8, 8, 0xFFFFFFFF); typedef std::pair<std::wstring, Texture*> NameTexPair; // load embedded textures, i.e. textures that are embedded resources // open resource.rc in a text editor for info LoadEmbeddedTexture(device, L"Light.png"); }
void TextureLib::InitInstance(ID3D11Device* device) { s_Inst = new TextureLib(); Imple* pImple = s_Inst->m_pImple; // color format ABGR pImple->m_defaultTextures[TextureType::DIFFUSE] = CreateCheckerboardTexture2D(device, 128, 128, 0xFF404040, 0xFF808080); pImple->m_defaultTextures[TextureType::Cubemap] = CreateCheckerboardTexture2D(device, 128, 128, 0xff000040, 0xff000080, true); pImple->m_defaultTextures[TextureType::NORMAL] = CreateSolidTexture2D(device, 8, 8, 0xFFFF8080); pImple->m_defaultTextures[TextureType::LIGHT] = CreateSolidTexture2D(device, 8, 8, 0xFFFFFFFF); pImple->m_defaultTextures[TextureType::SPEC] = CreateSolidTexture2D(device, 8, 8, 0xFF000000); pImple->m_defaultTextures[TextureType::BlankMask] = CreateSolidTexture2D(device, 4, 4, 0x00); pImple->m_defaultTextures[TextureType::FullMask] = CreateSolidTexture2D(device, 4, 4, 0xFFFFFFFF); pImple->m_whiteTexture = CreateSolidTexture2D(device, 8, 8, 0xFFFFFFFF); typedef std::pair<std::wstring, Texture*> NameTexPair; uint32_t resCount = ResUtil::ResourceCount(); for(uint32_t i = 0; i < resCount; i++) { const wchar_t* resName = ResUtil::GetResourceName(i); const std::wstring ext = FileUtils::GetExtensionLower(resName); HRESULT hr = E_FAIL; Texture* tex = NULL; ID3D11Resource* dxresource = NULL; ID3D11ShaderResourceView* dxTexView = NULL; uint32_t resSize = 0; if(ext == L".dds") { uint8_t* data = ResUtil::LoadResource(resName,&resSize); if(resSize == 0) continue; hr = CreateDDSTextureFromMemory( device, data, resSize, &dxresource, &dxTexView); free(data); } else if(ext == L".png" || ext == L".bmp" || ext == L".jpeg") { uint8_t* data = ResUtil::LoadResource(resName,&resSize); if(resSize == 0) continue; hr = CreateWICTextureFromMemory( device, NULL, data, resSize, &dxresource, &dxTexView); free(data); } if (Logger::IsFailureLog(hr, L"Error loading %s\n", resName)) { continue; } D3D11_RESOURCE_DIMENSION resType = D3D11_RESOURCE_DIMENSION_UNKNOWN; dxresource->GetType( &resType ); assert( resType == D3D11_RESOURCE_DIMENSION_TEXTURE2D); ID3D11Texture2D* dxTex = NULL; hr = dxresource->QueryInterface( __uuidof(ID3D11Texture2D), (void**) &dxTex ); dxresource->Release(); assert(dxTex); tex = new Texture(dxTex,dxTexView); auto insertResult = pImple->m_textures.insert(NameTexPair(resName,tex)); assert(insertResult.second); } }
void TextureLib::InitInstance(ID3D11Device* device) { s_Inst = new TextureLib(); Imple* pImple = s_Inst->m_pImple; pImple->m_defaultTextures[TextureType::DIFFUSE] = CreateCheckerboardTexture2D(device, 128, 128, 0xFF404040, 0xFF808080, false,true); pImple->m_defaultTextures[TextureType::DIFFUSE]->SetTextureType(TextureType::DIFFUSE); pImple->m_defaultTextures[TextureType::Cubemap] = CreateCheckerboardTexture2D(device, 128, 128, 0xff000040, 0xff000080, true); pImple->m_defaultTextures[TextureType::Cubemap]->SetTextureType(TextureType::Cubemap); pImple->m_defaultTextures[TextureType::NORMAL] = CreateSolidTexture2D(device, 8, 8, 0xFFFF8080); pImple->m_defaultTextures[TextureType::NORMAL]->SetTextureType(TextureType::NORMAL); pImple->m_defaultTextures[TextureType::LIGHT] = CreateSolidTexture2D(device, 8, 8, 0xFFFFFFFF); pImple->m_defaultTextures[TextureType::LIGHT]->SetTextureType(TextureType::LIGHT); pImple->m_defaultTextures[TextureType::SPEC] = CreateSolidTexture2D(device, 8, 8, 0xFF000000); pImple->m_defaultTextures[TextureType::SPEC]->SetTextureType(TextureType::SPEC); pImple->m_defaultTextures[TextureType::BlankMask] = CreateSolidTexture2D(device, 4, 4, 0x00); pImple->m_defaultTextures[TextureType::BlankMask]->SetTextureType(TextureType::BlankMask); pImple->m_defaultTextures[TextureType::FullMask] = CreateSolidTexture2D(device, 4, 4, 0xFFFFFFFF); pImple->m_defaultTextures[TextureType::FullMask]->SetTextureType(TextureType::FullMask); pImple->m_whiteTexture = CreateSolidTexture2D(device, 8, 8, 0xFFFFFFFF); typedef std::pair<std::wstring, Texture*> NameTexPair; const wchar_t* resName = L"Light.png"; const wchar_t* resType = L"Texture"; HRESULT hr = E_FAIL; Texture* tex = NULL; ID3D11Resource* dxresource = NULL; ID3D11ShaderResourceView* dxTexView = NULL; uint32_t resSize = 0; uint8_t* data = (uint8_t*)ResUtil::LoadResource(resType, resName,&resSize); hr = CreateWICTextureFromMemory( device, NULL, data, resSize, &dxresource, &dxTexView); free(data); if (!Logger::IsFailureLog(hr, L"Error loading %s\n", resName)) { D3D11_RESOURCE_DIMENSION resDim = D3D11_RESOURCE_DIMENSION_UNKNOWN; dxresource->GetType( &resDim ); assert( resDim == D3D11_RESOURCE_DIMENSION_TEXTURE2D); ID3D11Texture2D* dxTex = NULL; hr = dxresource->QueryInterface( __uuidof(ID3D11Texture2D), (void**) &dxTex ); dxresource->Release(); assert(dxTex); tex = new Texture(dxTex,dxTexView); auto insertResult = pImple->m_textures.insert(NameTexPair(resName,tex)); assert(insertResult.second); } }