mirror of
https://github.com/borgesdan/xn65
synced 2024-12-29 21:54:47 +01:00
Corrige Initialize em GraphicsDevice
This commit is contained in:
parent
9a8e3e26b5
commit
4335323879
@ -2,7 +2,7 @@
|
||||
#include "xna/game/gdevicemanager.hpp"
|
||||
|
||||
namespace xna {
|
||||
void reset(GraphicsDevice::PlatformImplementation& impl)
|
||||
static void reset(GraphicsDevice::PlatformImplementation& impl)
|
||||
{
|
||||
if (impl._device) {
|
||||
impl._device->Release();
|
||||
@ -24,7 +24,7 @@ namespace xna {
|
||||
impl._renderTarget2D = nullptr;
|
||||
}
|
||||
|
||||
bool createDevice(GraphicsDevice::PlatformImplementation& impl) {
|
||||
static bool createDevice(GraphicsDevice::PlatformImplementation& impl) {
|
||||
auto createDeviceFlags = 0;
|
||||
#if _DEBUG
|
||||
createDeviceFlags = D3D11_CREATE_DEVICE_FLAG::D3D11_CREATE_DEVICE_DEBUG;
|
||||
@ -75,6 +75,7 @@ namespace xna {
|
||||
impl = unew<PlatformImplementation>();
|
||||
|
||||
impl->_adapter = info.Adapter;
|
||||
impl->_gameWindow = info.Window;
|
||||
impl->_presentationParameters = info.Parameters;
|
||||
impl->_adapter->CurrentDisplayMode(
|
||||
impl->_presentationParameters->BackBufferFormat,
|
||||
@ -86,7 +87,7 @@ namespace xna {
|
||||
impl = nullptr;
|
||||
}
|
||||
|
||||
bool GraphicsDevice::Initialize(GameWindow& gameWindow) {
|
||||
bool GraphicsDevice::Initialize() {
|
||||
if (!impl)
|
||||
impl = uptr<PlatformImplementation>();
|
||||
|
||||
@ -101,14 +102,14 @@ namespace xna {
|
||||
if (FAILED(hr))
|
||||
return false;
|
||||
|
||||
const auto bounds = gameWindow.ClientBounds();
|
||||
const auto bounds = impl->_gameWindow->ClientBounds();
|
||||
|
||||
impl->_viewport = xna::Viewport(0.0F, 0.0F,
|
||||
static_cast<float>(bounds.Width),
|
||||
static_cast<float>(bounds.Height),
|
||||
0.0F, 1.F);
|
||||
|
||||
COLORREF color = gameWindow.impl->Color();
|
||||
COLORREF color = impl->_gameWindow->impl->Color();
|
||||
impl->_backgroundColor[0] = GetRValue(color) / 255.0f;
|
||||
impl->_backgroundColor[1] = GetGValue(color) / 255.0f;
|
||||
impl->_backgroundColor[2] = GetBValue(color) / 255.0f;
|
||||
@ -117,7 +118,7 @@ namespace xna {
|
||||
impl->_swapChain = New<xna::SwapChain>(_this);
|
||||
impl->_swapChain->Initialize();
|
||||
|
||||
hr = impl->_factory->MakeWindowAssociation(gameWindow.impl->WindowHandle(), DXGI_MWA_NO_ALT_ENTER);
|
||||
hr = impl->_factory->MakeWindowAssociation(impl->_gameWindow->impl->WindowHandle(), DXGI_MWA_NO_ALT_ENTER);
|
||||
if (FAILED(hr)) return false;
|
||||
|
||||
impl->_renderTarget2D = New<RenderTarget2D>(_this);
|
||||
|
@ -83,12 +83,11 @@ namespace xna {
|
||||
}
|
||||
|
||||
bool initDevice(GraphicsDeviceInformation& info, Game& game, sptr<GraphicsDevice>& device)
|
||||
{
|
||||
auto& window = info.Window;
|
||||
{
|
||||
device = New<GraphicsDevice>(info);
|
||||
|
||||
if (!device->Initialize(*window)) {
|
||||
MessageBox(window->impl->WindowHandle(), "Falha na inicializaçăo do dispositivo gráfico", "XN65", MB_OK);
|
||||
if (!device->Initialize()) {
|
||||
MessageBox(info.Window->impl->WindowHandle(), "Falha na inicialização do dispositivo gráfico", "XN65", MB_OK);
|
||||
device = nullptr;
|
||||
return false;
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ namespace xna {
|
||||
~GraphicsDevice();
|
||||
void Clear();
|
||||
void Clear(Color const& color);
|
||||
bool Initialize(GameWindow& gameWindow);
|
||||
bool Initialize();
|
||||
bool Present();
|
||||
sptr<GraphicsAdapter> Adapter() const;
|
||||
void Adapter(sptr<GraphicsAdapter> const& adapter);
|
||||
|
@ -447,6 +447,23 @@ namespace xna {
|
||||
};
|
||||
|
||||
struct GraphicsDevice::PlatformImplementation {
|
||||
~PlatformImplementation() {
|
||||
if (_device) {
|
||||
_device->Release();
|
||||
_device = nullptr;
|
||||
}
|
||||
|
||||
if (_context) {
|
||||
_context->Release();
|
||||
_device = nullptr;
|
||||
}
|
||||
|
||||
if (_factory) {
|
||||
_factory->Release();
|
||||
_factory = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
ID3D11Device* _device{ nullptr };
|
||||
ID3D11DeviceContext* _context{ nullptr };
|
||||
IDXGIFactory1* _factory = nullptr;
|
||||
@ -454,6 +471,7 @@ namespace xna {
|
||||
sptr<GraphicsAdapter> _adapter{ nullptr };
|
||||
sptr<RenderTarget2D> _renderTarget2D{ nullptr };
|
||||
sptr<BlendState> _blendState{ nullptr };
|
||||
sptr<GameWindow> _gameWindow = nullptr;
|
||||
xna::Viewport _viewport{};
|
||||
sptr<xna::PresentationParameters> _presentationParameters;
|
||||
D3D_FEATURE_LEVEL _featureLevel{ D3D_FEATURE_LEVEL::D3D_FEATURE_LEVEL_11_0 };
|
||||
|
Loading…
x
Reference in New Issue
Block a user