void ShutdownUtils() { linear_copy_sampler.reset(); point_copy_sampler.reset(); font.Shutdown(); SAFE_DELETE(util_vbuf); }
void InitUtils() { util_vbuf = new UtilVertexBuffer(65535); float border[4] = { 0.f, 0.f, 0.f, 0.f }; D3D11_SAMPLER_DESC samDesc = CD3D11_SAMPLER_DESC(D3D11_FILTER_MIN_MAG_MIP_POINT, D3D11_TEXTURE_ADDRESS_BORDER, D3D11_TEXTURE_ADDRESS_BORDER, D3D11_TEXTURE_ADDRESS_BORDER, 0.f, 1, D3D11_COMPARISON_ALWAYS, border, 0.f, 0.f); HRESULT hr = D3D::device->CreateSamplerState(&samDesc, ToAddr(point_copy_sampler)); if (FAILED(hr)) PanicAlert("Failed to create sampler state at %s %d\n", __FILE__, __LINE__); else SetDebugObjectName(point_copy_sampler.get(), "point copy sampler state"); samDesc = CD3D11_SAMPLER_DESC(D3D11_FILTER_MIN_MAG_MIP_LINEAR, D3D11_TEXTURE_ADDRESS_BORDER, D3D11_TEXTURE_ADDRESS_BORDER, D3D11_TEXTURE_ADDRESS_BORDER, 0.f, 1, D3D11_COMPARISON_ALWAYS, border, 0.f, 0.f); hr = D3D::device->CreateSamplerState(&samDesc, ToAddr(linear_copy_sampler)); if (FAILED(hr)) PanicAlert("Failed to create sampler state at %s %d\n", __FILE__, __LINE__); else SetDebugObjectName(linear_copy_sampler.get(), "linear copy sampler state"); // cached data used to avoid unnecessarily reloading the vertex buffers memset(&tex_quad_data, 0, sizeof(tex_quad_data)); memset(&draw_quad_data, 0, sizeof(draw_quad_data)); memset(&clear_quad_data, 0, sizeof(clear_quad_data)); // make sure to properly load the vertex data whenever the corresponding functions get called the first time stq_observer = stsq_observer = cq_observer = clearq_observer = true; util_vbuf->AddWrapObserver(&stq_observer); util_vbuf->AddWrapObserver(&stsq_observer); util_vbuf->AddWrapObserver(&cq_observer); util_vbuf->AddWrapObserver(&clearq_observer); font.Init(); }
void UGraphicsDevice::SetPSSamplerState(SamplerStatePtr inSampler, int inSlot) { auto sampler = inSampler.get(); mD3dDeviceCtx->PSSetSamplers(inSlot, 1, &sampler); }
void GraphicsDriver::SetPSSamplerState( SamplerStatePtr inSamplerState, int inStartSlot ) { auto sampler = inSamplerState.get(); g_pImmediateContext->PSSetSamplers( inStartSlot, 1, &sampler ); }
ID3D11SamplerState* GetLinearCopySampler() { return linear_copy_sampler.get(); }
ID3D11SamplerState* GetPointCopySampler() { return point_copy_sampler.get(); }
void SetLinearCopySampler() { D3D::stateman->SetSampler(0, linear_copy_sampler.get()); }
void SetPointCopySampler() { D3D::stateman->SetSampler(0, point_copy_sampler.get()); }