void D3DCreateSamplerStates() { HRESULT result; // Set up the common properties for our samplers D3D11_SAMPLER_DESC samplerDesc; ZeroMemory( &samplerDesc, sizeof(D3D11_SAMPLER_DESC) ); samplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_POINT; samplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_WRAP; samplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_WRAP; samplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP; samplerDesc.MipLODBias = 0.0f; samplerDesc.MaxAnisotropy = 1; samplerDesc.ComparisonFunc = D3D11_COMPARISON_ALWAYS; samplerDesc.BorderColor[0] = 0; samplerDesc.BorderColor[1] = 0; samplerDesc.BorderColor[2] = 0; samplerDesc.BorderColor[3] = 0; samplerDesc.MinLOD = 0; samplerDesc.MaxLOD = D3D11_FLOAT32_MAX; // Create a texture sampler state for nearest/point sampling and wrapping uv's result = g_pD3DDevice->CreateSamplerState( &samplerDesc, &g_pD3DSampleStateNearestWrap ); if( FAILED( result ) ) { LOGInfo( LOGTag, "Failed to create SamplerState\n" ); } // Create a texture sampler state for tri-linear sampling and wrapping uv's samplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR; result = g_pD3DDevice->CreateSamplerState( &samplerDesc, &g_pD3DSampleStateLinearWrap ); if( FAILED( result ) ) { LOGInfo( LOGTag, "Failed to create SamplerState\n" ); } }
bool Initialize(const Microsoft::WRL::ComPtr<ID3D11Device> &device , const std::shared_ptr<imageutil::Image> &image) { D3D11_TEXTURE2D_DESC desc; desc.Width = image->Width(); desc.Height = image->Height(); desc.MipLevels = 1; desc.ArraySize = 1; desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; desc.SampleDesc.Count = 1; desc.SampleDesc.Quality = 0; desc.Usage = D3D11_USAGE_DEFAULT; desc.BindFlags = D3D11_BIND_SHADER_RESOURCE; desc.CPUAccessFlags = 0; desc.MiscFlags = 0; D3D11_SUBRESOURCE_DATA initData; initData.pSysMem = image->Pointer(); initData.SysMemPitch = image->Stride(); initData.SysMemSlicePitch = image->Size(); auto hr = device->CreateTexture2D(&desc, &initData, &m_texture); if (FAILED(hr)){ return false; } D3D11_SHADER_RESOURCE_VIEW_DESC SRVDesc = {}; SRVDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM; SRVDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D; SRVDesc.Texture2D.MipLevels = 1; hr = device->CreateShaderResourceView(m_texture.Get(), &SRVDesc, &m_srv); if (FAILED(hr)) { return false; } D3D11_SAMPLER_DESC samplerDesc; samplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR; samplerDesc.AddressU = D3D11_TEXTURE_ADDRESS_WRAP; samplerDesc.AddressV = D3D11_TEXTURE_ADDRESS_WRAP; samplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP; samplerDesc.MipLODBias = 0.0f; samplerDesc.MaxAnisotropy = 1; samplerDesc.ComparisonFunc = D3D11_COMPARISON_ALWAYS; samplerDesc.BorderColor[0] = 0; samplerDesc.BorderColor[1] = 0; samplerDesc.BorderColor[2] = 0; samplerDesc.BorderColor[3] = 0; samplerDesc.MinLOD = 0; samplerDesc.MaxLOD = D3D11_FLOAT32_MAX; // Create the texture sampler state. hr = device->CreateSamplerState(&samplerDesc, &m_sampler); if(FAILED(hr)) { return false; } return true; }