diff --git a/framework/platform-dx/texture.cpp b/framework/platform-dx/texture.cpp index fe4191b..08632cc 100644 --- a/framework/platform-dx/texture.cpp +++ b/framework/platform-dx/texture.cpp @@ -1,7 +1,8 @@ #include "xna/xna-dx.hpp" namespace xna { - static HRESULT internalSetData(Texture2D::PlatformImplementation& impl, GraphicsDevice& device, UINT const* data); + static void setDefaultTexture2DDesc(Texture2D::PlatformImplementation& impl); + static HRESULT internalTexture2DSetData(Texture2D::PlatformImplementation& impl, GraphicsDevice& device, UINT const* data); void Texture2D::Initialize() { @@ -30,43 +31,29 @@ namespace xna { surfaceFormat = DxHelpers::SurfaceFormatToXna(impl->dxDescription.Format); levelCount = static_cast(impl->dxShaderDescription.Texture2D.MipLevels); - } - - void setDefaultDesc(Texture2D::PlatformImplementation& impl) { - impl.dxDescription.MipLevels = 1; - impl.dxDescription.ArraySize = 1; - impl.dxDescription.Format = DXGI_FORMAT_R8G8B8A8_UNORM; - impl.dxDescription.SampleDesc.Count = 1; - impl.dxDescription.Usage = D3D11_USAGE_DEFAULT; - impl.dxDescription.BindFlags = D3D11_BIND_SHADER_RESOURCE; - - impl.dxShaderDescription.Format = DXGI_FORMAT_R8G8B8A8_UNORM; - impl.dxShaderDescription.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D; - impl.dxShaderDescription.Texture2D.MipLevels = impl.dxDescription.MipLevels; - impl.dxShaderDescription.Texture2D.MostDetailedMip = 0; - } + } Texture2D::Texture2D() : Texture(nullptr) { impl = unew(); - setDefaultDesc(*impl); + setDefaultTexture2DDesc(*impl); } Texture2D::Texture2D(sptr const& device, size_t width, size_t height) : Texture(device) { impl = unew(); - setDefaultDesc(*impl); + setDefaultTexture2DDesc(*impl); impl->dxDescription.Width = static_cast(width); impl->dxDescription.Height = static_cast(height); } Texture2D::Texture2D(sptr const& device) : Texture(device) { impl = unew(); - setDefaultDesc(*impl); + setDefaultTexture2DDesc(*impl); } Texture2D::Texture2D(sptr const& device, size_t width, size_t height, size_t mipMap, SurfaceFormat format) : Texture(device) { impl = unew(); - setDefaultDesc(*impl); + setDefaultTexture2DDesc(*impl); impl->dxDescription.Width = static_cast(width); impl->dxDescription.Height = static_cast(height); impl->dxDescription.MipLevels = static_cast(mipMap); @@ -79,7 +66,7 @@ namespace xna { Exception::Throw(Exception::INVALID_OPERATION); } - internalSetData(*impl, *m_device, data.data()); + internalTexture2DSetData(*impl, *m_device, data.data()); } void Texture2D::SetData(std::vector const& data, size_t startIndex, size_t elementCount) @@ -100,7 +87,7 @@ namespace xna { ++fIndex; } - internalSetData(*impl, *m_device, finalData.data()); + internalTexture2DSetData(*impl, *m_device, finalData.data()); } void Texture2D::SetData(Int level, Rectangle* rect, std::vector const& data, size_t startIndex, size_t elementCount) @@ -175,7 +162,7 @@ namespace xna { ++finalDataIndex; } - internalSetData(*impl, *m_device, finalData.data()); + internalTexture2DSetData(*impl, *m_device, finalData.data()); } P_Texture2D Texture2D::FromStream(GraphicsDevice& device, P_Stream const& stream) @@ -267,7 +254,7 @@ namespace xna { ); } - HRESULT internalSetData(Texture2D::PlatformImplementation& impl, GraphicsDevice& device, UINT const* data) + HRESULT internalTexture2DSetData(Texture2D::PlatformImplementation& impl, GraphicsDevice& device, UINT const* data) { if (!impl.dxTexture2D) { auto hr = device.impl->_device->CreateTexture2D(&impl.dxDescription, nullptr, impl.dxTexture2D.ReleaseAndGetAddressOf()); @@ -298,4 +285,18 @@ namespace xna { return NO_ERROR; } + + void setDefaultTexture2DDesc(Texture2D::PlatformImplementation& impl) { + impl.dxDescription.MipLevels = 1; + impl.dxDescription.ArraySize = 1; + impl.dxDescription.Format = DXGI_FORMAT_R8G8B8A8_UNORM; + impl.dxDescription.SampleDesc.Count = 1; + impl.dxDescription.Usage = D3D11_USAGE_DEFAULT; + impl.dxDescription.BindFlags = D3D11_BIND_SHADER_RESOURCE; + + impl.dxShaderDescription.Format = DXGI_FORMAT_R8G8B8A8_UNORM; + impl.dxShaderDescription.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D; + impl.dxShaderDescription.Texture2D.MipLevels = impl.dxDescription.MipLevels; + impl.dxShaderDescription.Texture2D.MostDetailedMip = 0; + } } \ No newline at end of file