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 @@
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Pixel</ShaderType>
<ObjectFileOutput Condition="'$(Configuration)|$(Platform)'=='Debug|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 Include="VertexShader.hlsl">
<ShaderType Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Vertex</ShaderType>
......
struct VSOut
{
float3 color : Color;
float4 pos : SV_Position;
};
cbuffer CBuf
{
matrix transform;
};
VSOut main(float3 pos : Position, float3 color : Color)
float4 main(float3 pos : Position): SV_Position
{
VSOut vso;
vso.pos = mul(float4(pos, 1.0f), transform);
vso.color = color;
return vso;
return mul(float4(pos, 1.0f), transform);
}
\ No newline at end of file
......@@ -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
ID3D11InputLayout* pInputLayout;
......@@ -206,6 +232,24 @@ void DefineConstantBuffer(float angle)
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()
{
// Create input elements description, choosing whatever need to send to GPU
......@@ -214,7 +258,7 @@ void DefineInputLayout()
//{ "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 },
//{ "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
......@@ -257,6 +301,7 @@ void drawTriangle()
DefineVertexBuffer();
DefineIndexBuffer();
DefineConstantBuffer(timer.Peek());
DefineColorConstantBuffer();
DefineInputLayout();
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