Commit 9dac251e authored by Administrator's avatar Administrator
Browse files

draw with vertex index and color constant buffer

parent d40ceedc
float4 main(float3 color : Color) : SV_Target cbuffer CBuf
{ {
return float4(color, 1.0f); float4 face_color[6];
};
//float4 main( float3 color : Color) : SV_Target
float4 main(uint tid: SV_PrimitiveID) : SV_Target
{
//return float4(color, 1.0f);
return face_color[tid / 2];
} }
\ No newline at end of file
...@@ -138,6 +138,8 @@ ...@@ -138,6 +138,8 @@
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType> <ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
<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|x64'">4.0</ShaderModel>
<ShaderModel Condition="'$(Configuration)|$(Platform)'=='Release|x64'">4.0</ShaderModel>
</FxCompile> </FxCompile>
<FxCompile Include="VertexShader.hlsl"> <FxCompile Include="VertexShader.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType> <ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
......
struct VSOut
{
float3 color : Color;
float4 pos : SV_Position;
};
cbuffer CBuf cbuffer CBuf
{ {
matrix transform; matrix transform;
}; };
VSOut main(float3 pos : Position, float3 color : Color) float4 main(float3 pos : Position): SV_Position
{ {
VSOut vso; return mul(float4(pos, 1.0f), transform);
vso.pos = mul(float4(pos, 1.0f), transform);
vso.color = color;
return vso;
} }
\ No newline at end of file
...@@ -114,6 +114,32 @@ ConstantBuffer cb = ...@@ -114,6 +114,32 @@ ConstantBuffer cb =
) )
}; };
// Define color constant buffer
Microsoft::WRL::ComPtr<ID3D11Buffer> pColorConstantBuffer;
// Create constant buffer for color
struct ColorConstantBuffer
{
struct
{
float r;
float g;
float b;
float a;
} face_colors[6];
};
const ColorConstantBuffer ccb =
{
{
{ 1.0f, 0.0f, 1.0f },
{ 1.0f, 0.0f, 0.0f },
{ 0.0f, 1.0f, 0.0f },
{ 0.0f, 0.0f, 1.0f },
{ 1.0f, 1.0f, 0.0f },
{ 0.0f, 1.0f, 1.0f },
}
};
// Define input layout // Define input layout
ID3D11InputLayout* pInputLayout; ID3D11InputLayout* pInputLayout;
...@@ -206,6 +232,24 @@ void DefineConstantBuffer(float angle) ...@@ -206,6 +232,24 @@ void DefineConstantBuffer(float angle)
devcon->VSSetConstantBuffers(0u, 1u, pConstantBuffer.GetAddressOf()); devcon->VSSetConstantBuffers(0u, 1u, pConstantBuffer.GetAddressOf());
} }
void DefineColorConstantBuffer()
{
D3D11_BUFFER_DESC ccbd = {};
ccbd.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
ccbd.Usage = D3D11_USAGE_DEFAULT;
ccbd.CPUAccessFlags = 0u;
ccbd.MiscFlags = 0u;
ccbd.ByteWidth = sizeof(ccb);
ccbd.StructureByteStride = 0u;
D3D11_SUBRESOURCE_DATA ccsd = {};
ccsd.pSysMem = &ccb;
dev->CreateBuffer(&ccbd, &ccsd, &pColorConstantBuffer);
// Bind constant buffer to vertex
devcon->PSSetConstantBuffers(0u, 1u, pColorConstantBuffer.GetAddressOf());
}
void DefineInputLayout() void DefineInputLayout()
{ {
// Create input elements description, choosing whatever need to send to GPU // Create input elements description, choosing whatever need to send to GPU
...@@ -214,7 +258,7 @@ void DefineInputLayout() ...@@ -214,7 +258,7 @@ void DefineInputLayout()
//{ "Position",0,DXGI_FORMAT_R32G32_FLOAT,0,0,D3D11_INPUT_PER_VERTEX_DATA,0 }, //{ "Position",0,DXGI_FORMAT_R32G32_FLOAT,0,0,D3D11_INPUT_PER_VERTEX_DATA,0 },
{ "Position",0,DXGI_FORMAT_R32G32B32_FLOAT,0,0,D3D11_INPUT_PER_VERTEX_DATA,0 }, { "Position",0,DXGI_FORMAT_R32G32B32_FLOAT,0,0,D3D11_INPUT_PER_VERTEX_DATA,0 },
//{ "Color",0,DXGI_FORMAT_R32G32B32_FLOAT,0,8,D3D11_INPUT_PER_VERTEX_DATA,0 }, //{ "Color",0,DXGI_FORMAT_R32G32B32_FLOAT,0,8,D3D11_INPUT_PER_VERTEX_DATA,0 },
{ "Color",0,DXGI_FORMAT_R32G32B32_FLOAT,0,12,D3D11_INPUT_PER_VERTEX_DATA,0 }, //{ "Color",0,DXGI_FORMAT_R32G32B32_FLOAT,0,12,D3D11_INPUT_PER_VERTEX_DATA,0 },
}; };
// Create input layout, using the description Defined above // Create input layout, using the description Defined above
...@@ -257,6 +301,7 @@ void drawTriangle() ...@@ -257,6 +301,7 @@ void drawTriangle()
DefineVertexBuffer(); DefineVertexBuffer();
DefineIndexBuffer(); DefineIndexBuffer();
DefineConstantBuffer(timer.Peek()); DefineConstantBuffer(timer.Peek());
DefineColorConstantBuffer();
DefineInputLayout(); DefineInputLayout();
DrawPrimitive(); DrawPrimitive();
} }
......
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