Error Texture::platformInit(const Config& config) { ComPtr<ID3D11Resource> d3dResource; Renderer::PlatformDetails& plat = ((TextureDx11*)this)->_renderer.getPlatformDetails(); ID3D11Device* device = plat.device.Get(); if (config.depth > 0) { D3D11_TEXTURE3D_DESC desc; desc.Width = config.width; desc.Height = config.height; desc.Depth = config.depth; desc.MipLevels = config.lastMip+1; desc.Format = TranslateToDxgiFormat(config.format); desc.BindFlags = TranslateBindFlags(config.usage, config.format); desc.CPUAccessFlags = TranslateCpuAccessFlags(config.usage); desc.MiscFlags = TranslateMiscFlags(config.flags); desc.Usage = TranslateUsage(config.usage); HRESULT hr = device->CreateTexture3D(&desc, nullptr, (ID3D11Texture3D**) d3dResource.GetAddressOf()); if (FAILED(hr)) { EIGEN_RETURN_ERROR("Failed to create volume texture, HRESULT = %d", hr); } } else if (config.height > 0) { D3D11_TEXTURE2D_DESC desc; desc.Width = config.width; desc.Height = config.height; desc.MipLevels = config.lastMip+1; desc.ArraySize = config.arrayLength > 0 ? config.arrayLength : 1; desc.Format = TranslateToDxgiFormat(config.format); desc.SampleDesc.Count = (UINT)1 << (UINT)config.multisampling; desc.SampleDesc.Quality = 0; desc.BindFlags = TranslateBindFlags(config.usage, config.format); desc.CPUAccessFlags = TranslateCpuAccessFlags(config.usage); desc.MiscFlags = TranslateMiscFlags(config.flags); desc.Usage = TranslateUsage(config.usage); HRESULT hr = device->CreateTexture2D(&desc, nullptr, (ID3D11Texture2D**) d3dResource.GetAddressOf()); if (FAILED(hr)) { EIGEN_RETURN_ERROR("Failed to create texture, HRESULT = %d", hr); } } else { D3D11_TEXTURE1D_DESC desc; desc.Width = config.width; desc.MipLevels = config.lastMip+1; desc.ArraySize = config.arrayLength > 0 ? config.arrayLength : 1; desc.Format = TranslateToDxgiFormat(config.format); desc.BindFlags = TranslateBindFlags(config.usage, config.format); desc.CPUAccessFlags = TranslateCpuAccessFlags(config.usage); desc.MiscFlags = TranslateMiscFlags(config.flags); desc.Usage = TranslateUsage(config.usage); HRESULT hr = device->CreateTexture1D(&desc, nullptr, (ID3D11Texture1D**) d3dResource.GetAddressOf()); if (FAILED(hr)) { EIGEN_RETURN_ERROR("Failed to create 1D texture, HRESULT = %d", hr); } } ((TextureDx11*)this)->_d3dResource.Swap(d3dResource); EIGEN_RETURN_OK(); }