Ich versteh das nicht. Eigentlich sollte alles richtig funktionieren. Ich bin den Code wieder und wieder durchgegangen.
Hier ist meine Render Funktion vielleicht entdeckt jemand was:
|
C-/C++-Quelltext
|
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
50
51
52
53
54
55
|
void Game::Render()
{
m_pRenderSystem->PreRender();
//Set ColorShader
m_pColorShader->SetInputLayoutAndTopology(m_pRenderSystem->GetDeviceContext());
//Set geometry buffers
UINT stride = sizeof(Vertex);
UINT offset = 0;
m_pRenderSystem->GetDeviceContext()->IASetVertexBuffers(0, 1, &m_pCubeVertexBuffer, &stride, &offset);
m_pRenderSystem->GetDeviceContext()->IASetIndexBuffer(m_pCubeIndexBuffer, DXGI_FORMAT_R32_UINT, 0);
//Set constant buffer
D3D11_BUFFER_DESC cbPerObjectDesc;
cbPerObjectDesc.Usage = D3D11_USAGE_DYNAMIC;
cbPerObjectDesc.ByteWidth = sizeof(cbPerObject);
cbPerObjectDesc.BindFlags = D3D11_BIND_CONSTANT_BUFFER;
cbPerObjectDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
cbPerObjectDesc.MiscFlags = 0;
cbPerObjectDesc.StructureByteStride = 0;
m_pRenderSystem->GetDevice()->CreateBuffer(&cbPerObjectDesc, 0, &m_cbPerObject);
D3D11_MAPPED_SUBRESOURCE mappedResource;
cbPerObject* dataPtr;
unsigned int bufferNumber;
m_pRenderSystem->GetDeviceContext()->Map(m_cbPerObject, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);
dataPtr = (cbPerObject*) mappedResource.pData;
XMMatrixTranspose(m_WorldMatrix);
XMMatrixTranspose(m_ViewMatrix);
XMMatrixTranspose(m_ProjectionMatrix);
dataPtr->worldMatrix = m_WorldMatrix;
dataPtr->viewMatrix = m_ViewMatrix;
dataPtr->projectionMatrix = m_ProjectionMatrix;
m_pRenderSystem->GetDeviceContext()->Unmap(m_cbPerObject, 0);
bufferNumber = 0;
m_pRenderSystem->GetDeviceContext()->VSSetConstantBuffers(bufferNumber, 1, &m_cbPerObject);
m_pColorShader->SetAsShader(m_pRenderSystem->GetDeviceContext());
//Draw cube
m_pRenderSystem->GetDeviceContext()->DrawIndexed(36, 0, 0);
m_pRenderSystem->PostRender();
}
|
Edit:Ich habe inzwischen, indem ich die Kamera Position nach hinten setzte herausgefunden, dass sich der "Würfel" der Vertikale nach in die Unendlichkeit streckt. Jede tiefer desto rötlicher, je höher desto bläulicher (Das wollte ich ja auch so).
Edit2: Endlich ich habs hinbekommen! Hab die Matrizen falsch transponiert. Danke für eure Hilfe!