Commit b8dbcc7c authored by chili's avatar chili
Browse files

bindable/drawable system

parent 2467d634
#include "Topology.h"
Topology::Topology( Graphics& gfx,D3D11_PRIMITIVE_TOPOLOGY type )
:
type( type )
{}
void Topology::Bind( Graphics& gfx ) noexcept
{
GetContext( gfx )->IASetPrimitiveTopology( type );
}
#pragma once
#include "Bindable.h"
class Topology : public Bindable
{
public:
Topology( Graphics& gfx,D3D11_PRIMITIVE_TOPOLOGY type );
void Bind( Graphics& gfx ) noexcept override;
protected:
D3D11_PRIMITIVE_TOPOLOGY type;
};
\ No newline at end of file
#include "TransformCbuf.h"
TransformCbuf::TransformCbuf( Graphics& gfx,const Drawable& parent )
:
vcbuf( gfx ),
parent( parent )
{}
void TransformCbuf::Bind( Graphics& gfx ) noexcept
{
vcbuf.Update( gfx,
DirectX::XMMatrixTranspose(
parent.GetTransformXM() * gfx.GetProjection()
)
);
vcbuf.Bind( gfx );
}
#pragma once
#include "ConstantBuffers.h"
#include "Drawable.h"
#include <DirectXMath.h>
class TransformCbuf : public Bindable
{
public:
TransformCbuf( Graphics& gfx,const Drawable& parent );
void Bind( Graphics& gfx ) noexcept override;
private:
VertexConstantBuffer<DirectX::XMMATRIX> vcbuf;
const Drawable& parent;
};
\ No newline at end of file
#include "VertexBuffer.h"
void VertexBuffer::Bind( Graphics& gfx ) noexcept
{
const UINT offset = 0u;
GetContext( gfx )->IASetVertexBuffers( 0u,1u,pVertexBuffer.GetAddressOf(),&stride,&offset );
}
#pragma once
#include "Bindable.h"
#include "GraphicsThrowMacros.h"
class VertexBuffer : public Bindable
{
public:
template<class V>
VertexBuffer( Graphics& gfx,const std::vector<V>& vertices )
:
stride( sizeof( V ) )
{
INFOMAN( gfx );
D3D11_BUFFER_DESC bd = {};
bd.BindFlags = D3D11_BIND_VERTEX_BUFFER;
bd.Usage = D3D11_USAGE_DEFAULT;
bd.CPUAccessFlags = 0u;
bd.MiscFlags = 0u;
bd.ByteWidth = UINT( sizeof( V ) * vertices.size() );
bd.StructureByteStride = sizeof( V );
D3D11_SUBRESOURCE_DATA sd = {};
sd.pSysMem = vertices.data();
GFX_THROW_INFO( GetDevice( gfx )->CreateBuffer( &bd,&sd,&pVertexBuffer ) );
}
void Bind( Graphics& gfx ) noexcept override;
protected:
UINT stride;
Microsoft::WRL::ComPtr<ID3D11Buffer> pVertexBuffer;
};
#include "VertexShader.h"
#include "GraphicsThrowMacros.h"
VertexShader::VertexShader( Graphics& gfx,const std::wstring& path )
{
INFOMAN( gfx );
GFX_THROW_INFO( D3DReadFileToBlob( path.c_str(),&pBytecodeBlob ) );
GFX_THROW_INFO( GetDevice( gfx )->CreateVertexShader(
pBytecodeBlob->GetBufferPointer(),
pBytecodeBlob->GetBufferSize(),
nullptr,
&pVertexShader
) );
}
void VertexShader::Bind( Graphics& gfx ) noexcept
{
GetContext( gfx )->VSSetShader( pVertexShader.Get(),nullptr,0u );
}
ID3DBlob* VertexShader::GetBytecode() const noexcept
{
return pBytecodeBlob.Get();
}
#pragma once
#include "Bindable.h"
class VertexShader : public Bindable
{
public:
VertexShader( Graphics& gfx,const std::wstring& path );
void Bind( Graphics& gfx ) noexcept override;
ID3DBlob* GetBytecode() const noexcept;
protected:
Microsoft::WRL::ComPtr<ID3DBlob> pBytecodeBlob;
Microsoft::WRL::ComPtr<ID3D11VertexShader> pVertexShader;
};
\ No newline at end of file
...@@ -81,6 +81,7 @@ ...@@ -81,6 +81,7 @@
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<FloatingPointModel>Fast</FloatingPointModel> <FloatingPointModel>Fast</FloatingPointModel>
<LanguageStandard>stdcpplatest</LanguageStandard> <LanguageStandard>stdcpplatest</LanguageStandard>
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions); IS_DEBUG=true</PreprocessorDefinitions>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
...@@ -97,6 +98,7 @@ ...@@ -97,6 +98,7 @@
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<FloatingPointModel>Fast</FloatingPointModel> <FloatingPointModel>Fast</FloatingPointModel>
<LanguageStandard>stdcpplatest</LanguageStandard> <LanguageStandard>stdcpplatest</LanguageStandard>
<PreprocessorDefinitions>_MBCS;%(PreprocessorDefinitions); IS_DEBUG=true</PreprocessorDefinitions>
</ClCompile> </ClCompile>
<Link> <Link>
<SubSystem>Windows</SubSystem> <SubSystem>Windows</SubSystem>
...@@ -112,7 +114,7 @@ ...@@ -112,7 +114,7 @@
<ConformanceMode>true</ConformanceMode> <ConformanceMode>true</ConformanceMode>
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<PreprocessorDefinitions>NDEBUG;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;_MBCS;%(PreprocessorDefinitions);IS_DEBUG=false</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FloatingPointModel>Fast</FloatingPointModel> <FloatingPointModel>Fast</FloatingPointModel>
<LanguageStandard>stdcpplatest</LanguageStandard> <LanguageStandard>stdcpplatest</LanguageStandard>
...@@ -133,7 +135,7 @@ ...@@ -133,7 +135,7 @@
<ConformanceMode>true</ConformanceMode> <ConformanceMode>true</ConformanceMode>
<MultiProcessorCompilation>true</MultiProcessorCompilation> <MultiProcessorCompilation>true</MultiProcessorCompilation>
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed> <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
<PreprocessorDefinitions>NDEBUG;_MBCS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>NDEBUG;_MBCS;%(PreprocessorDefinitions);IS_DEBUG=false</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<FloatingPointModel>Fast</FloatingPointModel> <FloatingPointModel>Fast</FloatingPointModel>
<LanguageStandard>stdcpplatest</LanguageStandard> <LanguageStandard>stdcpplatest</LanguageStandard>
...@@ -146,32 +148,54 @@ ...@@ -146,32 +148,54 @@
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="App.cpp" /> <ClCompile Include="App.cpp" />
<ClCompile Include="Bindable.cpp" />
<ClCompile Include="Box.cpp" />
<ClCompile Include="ChiliException.cpp" /> <ClCompile Include="ChiliException.cpp" />
<ClCompile Include="ChiliTimer.cpp" /> <ClCompile Include="ChiliTimer.cpp" />
<ClCompile Include="Drawable.cpp" />
<ClCompile Include="dxerr.cpp" /> <ClCompile Include="dxerr.cpp" />
<ClCompile Include="DxgiInfoManager.cpp" /> <ClCompile Include="DxgiInfoManager.cpp" />
<ClCompile Include="Graphics.cpp" /> <ClCompile Include="Graphics.cpp" />
<ClCompile Include="IndexBuffer.cpp" />
<ClCompile Include="InputLayout.cpp" />
<ClCompile Include="Keyboard.cpp" /> <ClCompile Include="Keyboard.cpp" />
<ClCompile Include="Mouse.cpp" /> <ClCompile Include="Mouse.cpp" />
<ClCompile Include="PixelShader.cpp" />
<ClCompile Include="Topology.cpp" />
<ClCompile Include="TransformCbuf.cpp" />
<ClCompile Include="VertexBuffer.cpp" />
<ClCompile Include="VertexShader.cpp" />
<ClCompile Include="Window.cpp" /> <ClCompile Include="Window.cpp" />
<ClCompile Include="WindowsMessageMap.cpp" /> <ClCompile Include="WindowsMessageMap.cpp" />
<ClCompile Include="WinMain.cpp" /> <ClCompile Include="WinMain.cpp" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="App.h" /> <ClInclude Include="App.h" />
<ClInclude Include="Bindable.h" />
<ClInclude Include="BindableBase.h" />
<ClInclude Include="Box.h" />
<ClInclude Include="ChiliException.h" /> <ClInclude Include="ChiliException.h" />
<ClInclude Include="ChiliTimer.h" /> <ClInclude Include="ChiliTimer.h" />
<ClInclude Include="ChiliWin.h" /> <ClInclude Include="ChiliWin.h" />
<ClInclude Include="ConstantBuffers.h" />
<ClInclude Include="Drawable.h" />
<ClInclude Include="dxerr.h" /> <ClInclude Include="dxerr.h" />
<ClInclude Include="DxgiInfoManager.h" /> <ClInclude Include="DxgiInfoManager.h" />
<ClInclude Include="Graphics.h" /> <ClInclude Include="Graphics.h" />
<ClInclude Include="GraphicsThrowMacros.h" /> <ClInclude Include="GraphicsThrowMacros.h" />
<ClInclude Include="IndexBuffer.h" />
<ClInclude Include="InputLayout.h" />
<ClInclude Include="Keyboard.h" /> <ClInclude Include="Keyboard.h" />
<ClInclude Include="Mouse.h" /> <ClInclude Include="Mouse.h" />
<ClInclude Include="PixelShader.h" />
<ClInclude Include="resource.h" /> <ClInclude Include="resource.h" />
<ClInclude Include="Topology.h" />
<ClInclude Include="TransformCbuf.h" />
<ClInclude Include="VertexBuffer.h" />
<ClInclude Include="VertexShader.h" />
<ClInclude Include="Window.h" /> <ClInclude Include="Window.h" />
<ClInclude Include="WindowsMessageMap.h" /> <ClInclude Include="WindowsMessageMap.h" />
<ClInclude Include="WindowsThrowMacros.h" /> <ClInclude Include="WindowThrowMacros.h" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="hw3d.rc" /> <ResourceCompile Include="hw3d.rc" />
...@@ -195,8 +219,8 @@ ...@@ -195,8 +219,8 @@
<ObjectFileOutput Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)%(Filename).cso</ObjectFileOutput> <ObjectFileOutput Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(ProjectDir)%(Filename).cso</ObjectFileOutput>
<ObjectFileOutput Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)%(Filename).cso</ObjectFileOutput> <ObjectFileOutput Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(ProjectDir)%(Filename).cso</ObjectFileOutput>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel> <ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel> <ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel> <ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
</FxCompile> </FxCompile>
<FxCompile Include="VertexShader.hlsl"> <FxCompile Include="VertexShader.hlsl">
...@@ -208,6 +232,10 @@ ...@@ -208,6 +232,10 @@
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType> <ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType> <ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType> <ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Vertex</ShaderType>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4.0</ShaderModel>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4.0</ShaderModel>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">4.0</ShaderModel>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
</FxCompile> </FxCompile>
</ItemGroup> </ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
......
...@@ -20,7 +20,19 @@ ...@@ -20,7 +20,19 @@
<UniqueIdentifier>{246c933d-909b-4e52-ace4-7be4ab3da27b}</UniqueIdentifier> <UniqueIdentifier>{246c933d-909b-4e52-ace4-7be4ab3da27b}</UniqueIdentifier>
</Filter> </Filter>
<Filter Include="Header Files\Macros"> <Filter Include="Header Files\Macros">
<UniqueIdentifier>{3d927852-8462-4d02-ae2f-01365b05ae28}</UniqueIdentifier> <UniqueIdentifier>{c62c91bc-50e8-4796-8319-6caf607ee4f8}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\Bindable">
<UniqueIdentifier>{8212b4ff-b281-4a2b-a58f-939dd096e69a}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\Bindable">
<UniqueIdentifier>{ca931623-77ca-4413-a547-16916dac2740}</UniqueIdentifier>
</Filter>
<Filter Include="Header Files\Drawable">
<UniqueIdentifier>{e73e32bd-8d79-4c49-beae-9a4a4dcf591f}</UniqueIdentifier>
</Filter>
<Filter Include="Source Files\Drawable">
<UniqueIdentifier>{43a2ba1f-f562-4758-9a91-b3da2e14ed89}</UniqueIdentifier>
</Filter> </Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
...@@ -57,6 +69,36 @@ ...@@ -57,6 +69,36 @@
<ClCompile Include="DxgiInfoManager.cpp"> <ClCompile Include="DxgiInfoManager.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="Bindable.cpp">
<Filter>Source Files\Bindable</Filter>
</ClCompile>
<ClCompile Include="VertexShader.cpp">
<Filter>Source Files\Bindable</Filter>
</ClCompile>
<ClCompile Include="VertexBuffer.cpp">
<Filter>Source Files\Bindable</Filter>
</ClCompile>
<ClCompile Include="TransformCbuf.cpp">
<Filter>Source Files\Bindable</Filter>
</ClCompile>
<ClCompile Include="Topology.cpp">
<Filter>Source Files\Bindable</Filter>
</ClCompile>
<ClCompile Include="PixelShader.cpp">
<Filter>Source Files\Bindable</Filter>
</ClCompile>
<ClCompile Include="InputLayout.cpp">
<Filter>Source Files\Bindable</Filter>
</ClCompile>
<ClCompile Include="IndexBuffer.cpp">
<Filter>Source Files\Bindable</Filter>
</ClCompile>
<ClCompile Include="Drawable.cpp">
<Filter>Source Files\Drawable</Filter>
</ClCompile>
<ClCompile Include="Box.cpp">
<Filter>Source Files\Drawable</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="WindowsMessageMap.h"> <ClInclude Include="WindowsMessageMap.h">
...@@ -98,9 +140,45 @@ ...@@ -98,9 +140,45 @@
<ClInclude Include="GraphicsThrowMacros.h"> <ClInclude Include="GraphicsThrowMacros.h">
<Filter>Header Files\Macros</Filter> <Filter>Header Files\Macros</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="WindowsThrowMacros.h"> <ClInclude Include="WindowThrowMacros.h">
<Filter>Header Files\Macros</Filter> <Filter>Header Files\Macros</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Bindable.h">
<Filter>Header Files\Bindable</Filter>
</ClInclude>
<ClInclude Include="PixelShader.h">
<Filter>Header Files\Bindable</Filter>
</ClInclude>
<ClInclude Include="VertexShader.h">
<Filter>Header Files\Bindable</Filter>
</ClInclude>
<ClInclude Include="InputLayout.h">
<Filter>Header Files\Bindable</Filter>
</ClInclude>
<ClInclude Include="VertexBuffer.h">
<Filter>Header Files\Bindable</Filter>
</ClInclude>
<ClInclude Include="Topology.h">
<Filter>Header Files\Bindable</Filter>
</ClInclude>
<ClInclude Include="IndexBuffer.h">
<Filter>Header Files\Bindable</Filter>
</ClInclude>
<ClInclude Include="ConstantBuffers.h">
<Filter>Header Files\Bindable</Filter>
</ClInclude>
<ClInclude Include="TransformCbuf.h">
<Filter>Header Files\Bindable</Filter>
</ClInclude>
<ClInclude Include="BindableBase.h">
<Filter>Header Files\Bindable</Filter>
</ClInclude>
<ClInclude Include="Drawable.h">
<Filter>Header Files\Drawable</Filter>
</ClInclude>
<ClInclude Include="Box.h">
<Filter>Header Files\Drawable</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="hw3d.rc"> <ResourceCompile Include="hw3d.rc">
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment