parent
ef4b0d85e6
commit
080cd5523b
|
|
@ -227,12 +227,12 @@ namespace kiwano
|
||||||
if (show)
|
if (show)
|
||||||
{
|
{
|
||||||
debug_node_ = new DebugNode;
|
debug_node_ = new DebugNode;
|
||||||
Renderer::Instance().StartCollectData();
|
Renderer::Instance().SetCollectingStatus(true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
debug_node_.Reset();
|
debug_node_.Reset();
|
||||||
Renderer::Instance().StopCollectData();
|
Renderer::Instance().SetCollectingStatus(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
|
|
||||||
namespace kiwano
|
namespace kiwano
|
||||||
{
|
{
|
||||||
#if defined(_DEBUG)
|
|
||||||
namespace DX
|
namespace DX
|
||||||
{
|
{
|
||||||
HRESULT CreateD3DDevice(IDXGIAdapter *adapter, D3D10_DRIVER_TYPE driver_type, UINT flags, ID3D10Device1 **device)
|
HRESULT CreateD3DDevice(IDXGIAdapter *adapter, D3D10_DRIVER_TYPE driver_type, UINT flags, ID3D10Device1 **device)
|
||||||
|
|
@ -63,6 +63,7 @@ namespace kiwano
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(KGE_DEBUG)
|
||||||
inline bool SdkLayersAvailable()
|
inline bool SdkLayersAvailable()
|
||||||
{
|
{
|
||||||
HRESULT hr = CreateD3DDevice(
|
HRESULT hr = CreateD3DDevice(
|
||||||
|
|
@ -74,9 +75,11 @@ namespace kiwano
|
||||||
|
|
||||||
return SUCCEEDED(hr);
|
return SUCCEEDED(hr);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
} // namespace DX
|
||||||
|
|
||||||
|
|
||||||
D3D10DeviceResources::D3D10DeviceResources()
|
D3D10DeviceResources::D3D10DeviceResources()
|
||||||
: hwnd_(nullptr)
|
: hwnd_(nullptr)
|
||||||
{
|
{
|
||||||
|
|
@ -133,6 +136,26 @@ namespace kiwano
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HRESULT D3D10DeviceResources::Present(bool vsync)
|
||||||
|
{
|
||||||
|
// The first argument instructs DXGI to block until VSync.
|
||||||
|
return dxgi_swap_chain_->Present(vsync ? 1 : 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT D3D10DeviceResources::ClearRenderTarget(Color& clear_color)
|
||||||
|
{
|
||||||
|
d3d_device_->OMSetRenderTargets(
|
||||||
|
1,
|
||||||
|
&d3d_rt_view_,
|
||||||
|
d3d_ds_view_.Get()
|
||||||
|
);
|
||||||
|
d3d_device_->ClearRenderTargetView(
|
||||||
|
d3d_rt_view_.Get(),
|
||||||
|
reinterpret_cast<float*>(&clear_color)
|
||||||
|
);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
void D3D10DeviceResources::DiscardResources()
|
void D3D10DeviceResources::DiscardResources()
|
||||||
{
|
{
|
||||||
d3d_device_.Reset();
|
d3d_device_.Reset();
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,14 @@ namespace kiwano
|
||||||
HWND hwnd
|
HWND hwnd
|
||||||
);
|
);
|
||||||
|
|
||||||
|
HRESULT Present(
|
||||||
|
bool vsync
|
||||||
|
);
|
||||||
|
|
||||||
|
HRESULT ClearRenderTarget(
|
||||||
|
Color& clear_color
|
||||||
|
);
|
||||||
|
|
||||||
HRESULT HandleDeviceLost();
|
HRESULT HandleDeviceLost();
|
||||||
|
|
||||||
HRESULT SetLogicalSize(
|
HRESULT SetLogicalSize(
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
|
|
||||||
namespace kiwano
|
namespace kiwano
|
||||||
{
|
{
|
||||||
#if defined(_DEBUG)
|
#if defined(KGE_DEBUG)
|
||||||
namespace DX
|
namespace DX
|
||||||
{
|
{
|
||||||
inline bool SdkLayersAvailable()
|
inline bool SdkLayersAvailable()
|
||||||
|
|
@ -109,6 +109,26 @@ namespace kiwano
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HRESULT D3D11DeviceResources::Present(bool vsync)
|
||||||
|
{
|
||||||
|
// The first argument instructs DXGI to block until VSync.
|
||||||
|
return dxgi_swap_chain_->Present(vsync ? 1 : 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
HRESULT D3D11DeviceResources::ClearRenderTarget(Color& clear_color)
|
||||||
|
{
|
||||||
|
d3d_device_context_->OMSetRenderTargets(
|
||||||
|
1,
|
||||||
|
&d3d_rt_view_,
|
||||||
|
d3d_ds_view_.Get()
|
||||||
|
);
|
||||||
|
d3d_device_context_->ClearRenderTargetView(
|
||||||
|
d3d_rt_view_.Get(),
|
||||||
|
reinterpret_cast<float*>(&clear_color)
|
||||||
|
);
|
||||||
|
return S_OK;
|
||||||
|
}
|
||||||
|
|
||||||
void D3D11DeviceResources::DiscardResources()
|
void D3D11DeviceResources::DiscardResources()
|
||||||
{
|
{
|
||||||
d3d_device_.Reset();
|
d3d_device_.Reset();
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,14 @@ namespace kiwano
|
||||||
HWND hwnd
|
HWND hwnd
|
||||||
);
|
);
|
||||||
|
|
||||||
|
HRESULT Present(
|
||||||
|
bool vsync
|
||||||
|
);
|
||||||
|
|
||||||
|
HRESULT ClearRenderTarget(
|
||||||
|
Color& clear_color
|
||||||
|
);
|
||||||
|
|
||||||
HRESULT HandleDeviceLost();
|
HRESULT HandleDeviceLost();
|
||||||
|
|
||||||
HRESULT SetLogicalSize(
|
HRESULT SetLogicalSize(
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ namespace kiwano
|
||||||
, text_antialias_(TextAntialias::ClearType)
|
, text_antialias_(TextAntialias::ClearType)
|
||||||
, clear_color_(Color::Black)
|
, clear_color_(Color::Black)
|
||||||
, opacity_(1.f)
|
, opacity_(1.f)
|
||||||
, collecting_data_(false)
|
, collecting_status_(false)
|
||||||
{
|
{
|
||||||
status_.primitives = 0;
|
status_.primitives = 0;
|
||||||
}
|
}
|
||||||
|
|
@ -128,7 +128,7 @@ namespace kiwano
|
||||||
if (!device_context_)
|
if (!device_context_)
|
||||||
return E_UNEXPECTED;
|
return E_UNEXPECTED;
|
||||||
|
|
||||||
if (collecting_data_)
|
if (collecting_status_)
|
||||||
{
|
{
|
||||||
status_.start = Time::Now();
|
status_.start = Time::Now();
|
||||||
status_.primitives = 0;
|
status_.primitives = 0;
|
||||||
|
|
@ -151,20 +151,12 @@ namespace kiwano
|
||||||
|
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
{
|
{
|
||||||
// The first argument instructs DXGI to block until VSync.
|
hr = device_resources_->Present(vsync_);
|
||||||
hr = device_resources_->GetDXGISwapChain()->Present(vsync_ ? 1 : 0, 0);
|
}
|
||||||
|
|
||||||
auto main_rt_view = device_resources_->GetD3DRenderTargetView();
|
if (SUCCEEDED(hr))
|
||||||
device_resources_->GetD3DDeviceContext()->OMSetRenderTargets(
|
{
|
||||||
1,
|
hr = device_resources_->ClearRenderTarget(clear_color_);
|
||||||
&main_rt_view,
|
|
||||||
device_resources_->GetD3DDepthStencilView()
|
|
||||||
);
|
|
||||||
|
|
||||||
device_resources_->GetD3DDeviceContext()->ClearRenderTargetView(
|
|
||||||
main_rt_view,
|
|
||||||
reinterpret_cast<float*>(&clear_color_)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hr == DXGI_ERROR_DEVICE_REMOVED || hr == DXGI_ERROR_DEVICE_RESET)
|
if (hr == DXGI_ERROR_DEVICE_REMOVED || hr == DXGI_ERROR_DEVICE_RESET)
|
||||||
|
|
@ -173,7 +165,7 @@ namespace kiwano
|
||||||
hr = HandleDeviceLost();
|
hr = HandleDeviceLost();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (collecting_data_)
|
if (collecting_status_)
|
||||||
{
|
{
|
||||||
status_.duration = Time::Now() - status_.start;
|
status_.duration = Time::Now() - status_.start;
|
||||||
}
|
}
|
||||||
|
|
@ -208,7 +200,7 @@ namespace kiwano
|
||||||
device_resources_->GetStrokeStyle(stroke)
|
device_resources_->GetStrokeStyle(stroke)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (collecting_data_)
|
if (collecting_status_)
|
||||||
++status_.primitives;
|
++status_.primitives;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
@ -243,7 +235,7 @@ namespace kiwano
|
||||||
DX::ConvertToRectF(image->GetCropRect())
|
DX::ConvertToRectF(image->GetCropRect())
|
||||||
);
|
);
|
||||||
|
|
||||||
if (collecting_data_)
|
if (collecting_status_)
|
||||||
++status_.primitives;
|
++status_.primitives;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
@ -265,7 +257,7 @@ namespace kiwano
|
||||||
DX::ConvertToRectF(src_rect)
|
DX::ConvertToRectF(src_rect)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (collecting_data_)
|
if (collecting_status_)
|
||||||
++status_.primitives;
|
++status_.primitives;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
@ -275,7 +267,7 @@ namespace kiwano
|
||||||
if (!text_renderer_)
|
if (!text_renderer_)
|
||||||
return E_UNEXPECTED;
|
return E_UNEXPECTED;
|
||||||
|
|
||||||
if (collecting_data_)
|
if (collecting_status_)
|
||||||
++status_.primitives;
|
++status_.primitives;
|
||||||
return text_layout->Draw(nullptr, text_renderer_.Get(), 0, 0);
|
return text_layout->Draw(nullptr, text_renderer_.Get(), 0, 0);
|
||||||
}
|
}
|
||||||
|
|
@ -347,14 +339,9 @@ namespace kiwano
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::StartCollectData()
|
void Renderer::SetCollectingStatus(bool collecting)
|
||||||
{
|
{
|
||||||
collecting_data_ = true;
|
collecting_status_ = collecting;
|
||||||
}
|
|
||||||
|
|
||||||
void Renderer::StopCollectData()
|
|
||||||
{
|
|
||||||
collecting_data_ = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Renderer::SetClearColor(const Color & color)
|
void Renderer::SetClearColor(const Color & color)
|
||||||
|
|
|
||||||
|
|
@ -141,9 +141,7 @@ namespace kiwano
|
||||||
|
|
||||||
void DestroyComponent() override;
|
void DestroyComponent() override;
|
||||||
|
|
||||||
void StartCollectData();
|
void SetCollectingStatus(bool collecting);
|
||||||
|
|
||||||
void StopCollectData();
|
|
||||||
|
|
||||||
inline HWND GetTargetWindow() const { return hwnd_; }
|
inline HWND GetTargetWindow() const { return hwnd_; }
|
||||||
|
|
||||||
|
|
@ -173,7 +171,7 @@ namespace kiwano
|
||||||
float opacity_;
|
float opacity_;
|
||||||
bool antialias_;
|
bool antialias_;
|
||||||
bool vsync_;
|
bool vsync_;
|
||||||
bool collecting_data_;
|
bool collecting_status_;
|
||||||
|
|
||||||
Size output_size_;
|
Size output_size_;
|
||||||
Color clear_color_;
|
Color clear_color_;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue