J'ai une struct non transformée avec la coordination des sommets qui va former un triangle:Pourquoi la modification de la position Z de la «caméra» n'affiche pas la primitive?
struct utVertex ut_Vertex[] =
{
{ 2.5f, -3.0f, 0.0f, D3DCOLOR_XRGB(0, 0, 255), }, //a
{ 0.0f, 3.0f, 0.0f, D3DCOLOR_XRGB(0, 255, 0), }, //b
{ -2.5f, -3.0f, 0.0f, D3DCOLOR_XRGB(255, 0, 0), },//c
};
L'image ci-dessus devrait (pas sûr, parce que l'axe z peuvent être inversées, + peut-être devrait être là où - est) soit correct selon mon code:
D3DXMatrixLookAtLH(&matView,
&D3DXVECTOR3(0.0f, 0.0f, 10.0f),
&D3DXVECTOR3(0.0f, 0.0f, 0.0f),
&D3DXVECTOR3(0.0f, 1.0f, 0.0f));
d3dDevice->SetTransform(D3DTS_VIEW, &matView);
le point bleu sur l'image ci-dessus devrait être la position de la caméra en fonction de ce code. (S'il vous plaît dites-moi si je me trompe).
Ceci dessine un triangle correctement sur l'écran.
Maintenant, si je change la position de la caméra à -10.0f
au lieu de 10.0f
(je pense) c'est là la caméra doit être:
Mais il le devrait toujours être en regardant 0.0f, 0.0f, 0.0f
. Si c'est le cas, alors pourquoi changer la position Z de la 'caméra' ne montrera pas la primitive (triangle)?
Je pense que parce que vous essayez de rendre 3D sans tenir compte de la transformation de vue 2D, vous devez calculer une base orthonormée pour faire une représentation 2D "World2Screen". –
Je fais la transformation de projection –
Je suppose que vous êtes sur la voie de la transformation mais vous avez besoin de projection et de traduction si vous voulez l'animer. –