Bien le bonjour,
Dans DirectX 11 on peut utiliser un constant buffer pour envoyer les matrices de transformation à un shader.
J'organise ma scène sous forme d'un graphe de scène avec notamment des nœuds pour dessiner des meshes. Pour le rendu via un shader je dois passer la matrice monde de mon objet, ainsi que les matrices de vue et de projection de la caméra à mon shader via un constant buffer.
Donc voici comment j'ai fait
Voyez vous une meilleure façon de mettre à jour mon constant buffer avec la matrice monde de mon noeud. Quand je dit une meilleur façon je ne parle pas de l'utilisation d'un constant buffer mais plutôt d'une méthode autre que de le faire dans le nœud de scène directement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 struct TransformCBuffer { XMMATRIX World; XMMATRIX View; XMMATRIX Projection; }; ... //------------------------------------------------------------------ void MeshSceneNode::render(void) { Renderer::TransformCBuffer cBuffer; cBuffer.World = XMMatrixTranspose( mWorldMatrix ); cBuffer.View = XMMatrixTranspose( mpSceneGraph->getCamera()->getViewMatrix() ); cBuffer.Projection = XMMatrixTranspose( mpSceneGraph->getCamera()->getProjectionMatrix() ); mpSceneGraph->getRenderer()->updateTransformCBuffer( cBuffer ); mpMeshRenderer->renderMesh(); }
Kromagg![]()
Partager