1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
// Code found on directxtutorials.com
void BoxDemo::InitPipeline(){
ID3D10Blob* VS, *PS;
D3DX11CompileFromFile(L"VertexShader.hlsl", 0, 0, "main", "vs_5_0", 0, 0, 0, &VS, 0, 0);
D3DX11CompileFromFile(L"VertexShader.hlsl", 0, 0, "PShader", "ps_5_0", 0, 0, 0, &PS, 0, 0);
// I made a shader file called vertexshader, then threw the pixel shader in there too.
mDevice->CreateVertexShader(VS->GetBufferPointer(), VS->GetBufferSize(), NULL, &mVS);
mDevice->CreatePixelShader(PS->GetBufferPointer(), PS->GetBufferSize(), NULL, &mPS);
mDeviceContext->VSSetShader(mVS, 0, 0);
mDeviceContext->PSSetShader(mPS, 0, 0);
D3D11_INPUT_ELEMENT_DESC ied[] =
{
{ "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 },
};
mDevice->CreateInputLayout(ied, 2, VS->GetBufferPointer(), VS->GetBufferSize(), &mInputLayout);
mDeviceContext->IASetInputLayout(mInputLayout);
}
void BoxDemo::InitGraphics(){
VERTEX OurVertices[] =
{
{ 0.0f, 0.5f, 0.0f, D3DXCOLOR(1.0f, 0.0f, 0.0f, 1.0f) },
{ 0.45f, -0.5, 0.0f, D3DXCOLOR(0.0f, 1.0f, 0.0f, 1.0f) },
{ -0.45f, -0.5f, 0.0f, D3DXCOLOR(0.0f, 0.0f, 1.0f, 1.0f) }
};
// Create Vertex Buffer
D3D11_BUFFER_DESC bd;
ZeroMemory(&bd, sizeof(bd));
bd.Usage = D3D11_USAGE_DYNAMIC;
bd.ByteWidth = sizeof(VERTEX) * 3;
bd.BindFlags = D3D11_BIND_VERTEX_BUFFER;
bd.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
mDevice->CreateBuffer(&bd, NULL, &VertexBuffer);
D3D11_MAPPED_SUBRESOURCE ms;
mDeviceContext->Map(VertexBuffer, 0, D3D11_MAP_READ_WRITE, 0, &ms); // Exception thrown. Access violation reading location
memcpy(ms.pData, OurVertices, sizeof(OurVertices));
mDeviceContext->Unmap(VertexBuffer, NULL);
}
|