Hallo zusammen,
ich bastel gerade mal wieder an einer kleinen Direct3D11 Demo rum und da lasse ich mir zuerst einmal einen rotierenden Würfel anzeigen.
Das Layout habe ich wie folgt definiert:
Für den Würfel
|
C-/C++-Quelltext
|
1
|
D3D11_INPUT_ELEMENT_DESC layout[] ={ { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "NORMAL", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0}, };
|
Schön - der Würfel rotiert und der Bass dröhnt aus den Boxen ...
Nun möchte ich aber auch noch Text in die gleiche Scene rendern. Da bin ich dann auf die Idee gekommen zusätzlich einfach einen weiteren
Shader zu implementieren, doch der sieht etwas anders aus und benutzt das folgende Layout:
Für den Text
|
C-/C++-Quelltext
|
1
|
D3D11_INPUT_ELEMENT_DESC layout[] = { { "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 }, { "TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 } };
|
Mein Programm fing sich dann über ein Logfile ordentlich mit Fehlern auszulassen. Denn Shader X mochte das Layout von Shader Y nicht besonders gut leiden.
Ich habe dann einfach bevor ich mit dem rendern der jeweiligen Scene angefangen habe den
|
C-/C++-Quelltext
|
1
|
...md3dDeviceContext->IASetInputLayout(pVertexLayout);
|
neu gesetzt. Funktioniert super, aber ist das auch
best practice?
Schöne Grüße
Fireball