📄 d3d9.cpp
字号:
//2008 - Marcelo Archanjo - marcelo_archanjo@yahoo.com.br - this source code is under General Public License.
#include "D3D9.h"
void SetupMatrices(IDirect3DDevice9* pd3dDevice)
{
//World Matrix e uma matriz Identidentidade
montaMatrizIdentidade(matWorld);
//View Matrix
montaViewMatrizTurbo();
//Projection Matrix
float fAspectRatio = (float)height/(float)width ;
SetProjectionMatrix( matProj, (float)0.78539, fAspectRatio, 0.1f, 6000.0f );//o ultimo parametro define a profundidade do campo visual
//0.78539 pi/4
pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );
pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
}
void montaViewMatrizTurbo(void)
{
D3DMATRIX matTemp,matRot;
// ******* Translacao *********
montaMatrizIdentidade(matView);
matView._41=-p.x;//mudei em rela玢o ao NovoMundo DX8 aqui era usado cam ao inv閟 de p
matView._42=-p.y;
matView._43=-p.z;
//o matView._41=-cam.x;
//o matView._42=-cam.y;
//o matView._43=-cam.z;
// ******** "Calculos" *********
calcSenCoss(&senX,&cosX,&p.indiceSpinX);
calcSenCoss(&senY,&cosY,&p.indiceSpinY);
calcSenCoss(&senZ,&cosZ,&p.indiceSpinZ);
// ****************************
montaMatrizIdentidade(matTemp);
// ****** Rotacao em X ********
montaMatrizIdentidade(matRot);
matRot._22 = cosX;
matRot._23 = senX;
matRot._32 = -senX;
matRot._33 = cosX;
MatrixMultiply(matTemp,matTemp,matRot);
//*****************************
// ****** Rotacao em Y ********
montaMatrizIdentidade(matRot);
matRot._11 = cosY;
matRot._13 =-senY;
matRot._31 =senY;
matRot._33 = cosY;
MatrixMultiply(matTemp,matTemp,matRot);
//*****************************
// ****** Rotacao em Z ********
montaMatrizIdentidade(matRot);
matRot._11 = cosZ;
matRot._12 =senZ;// senZ;mudei o sentido para ficar como se fosse regra da mao direita
matRot._21 =-senZ;// -senZ;mudei o sentido para ficar como se fosse regra da mao direita
matRot._22 = cosZ;
MatrixMultiply(matTemp,matTemp,matRot);
//*****************************
//MatrixMultiply(matView,matView,matTemp);//gira os objetos em relacao ao centro global
MatrixMultiply(matView,matTemp,matView);//gira os objetos em relacao ao observador
}
//porque nao vale o que fiz com as matrizes? , tenho a sensa玢o de que
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -