一个关于DirectX 变换的问题(进者有分)
我下载了DirectX 9的SDK,安装完毕后在Microsoft DirectX 9.0 SDK (December 2004)\Samples\C++\Direct3D\Tutorials\Tut02_Vertices有一个如何绘制三角形的例子以及Tut03_Matrices如何设置变换矩阵。但是我看完第二个例子后,想直接在上面增加变换矩阵即
void SetMatrix()
{
HRESULT result;
D3DXMATRIXA16 matWorld;
D3DXMatrixTranslation(&matWorld, 50, 50, 0);
result = g_pd3dDevice->SetTransform(D3DTS_WORLD, &matWorld);
assert(result == D3D_OK);
D3DXMATRIXA16 matView;
D3DXVECTOR3 vEyePt(0, 0, 6);
D3DXVECTOR3 vLookatPt(0, 0, -5);
D3DXVECTOR3 vUpVec(0, 1, 0);
D3DXMatrixLookAtLH(&matView, &vEyePt, &vLookatPt, &vUpVec);
g_pd3dDevice->SetTransform(D3DTS_VIEW, &matView);
D3DXMATRIXA16 matProj;
D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f );
g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
}
在绘制函数里面加上了对SetMatrix的调用
VOID Render()
{
// Clear the backbuffer to a blue color
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );
// Begin the scene
if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
{
SetMatrix();
g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLEFAN, 0, 2);
// End the scene
g_pd3dDevice->EndScene();
}
// Present the backbuffer contents to the display
g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
困扰我的就是不管我怎么设置这些变换矩阵,最终的显示结果都一样好像就没有设置过这些变换一样,我想请问大虾我哪里做错了或者少添加了什么东西?
void SetMatrix()
{
HRESULT result;
D3DXMATRIXA16 matWorld;
D3DXMatrixTranslation(&matWorld, 50, 50, 0);
result = g_pd3dDevice->SetTransform(D3DTS_WORLD, &matWorld);
assert(result == D3D_OK);
D3DXMATRIXA16 matView;
D3DXVECTOR3 vEyePt(0, 0, 6);
D3DXVECTOR3 vLookatPt(0, 0, -5);
D3DXVECTOR3 vUpVec(0, 1, 0);
D3DXMatrixLookAtLH(&matView, &vEyePt, &vLookatPt, &vUpVec);
g_pd3dDevice->SetTransform(D3DTS_VIEW, &matView);
D3DXMATRIXA16 matProj;
D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f );
g_pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
}
在绘制函数里面加上了对SetMatrix的调用
VOID Render()
{
// Clear the backbuffer to a blue color
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 );
// Begin the scene
if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
{
SetMatrix();
g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLEFAN, 0, 2);
// End the scene
g_pd3dDevice->EndScene();
}
// Present the backbuffer contents to the display
g_pd3dDevice->Present( NULL, NULL, NULL, NULL );
}
困扰我的就是不管我怎么设置这些变换矩阵,最终的显示结果都一样好像就没有设置过这些变换一样,我想请问大虾我哪里做错了或者少添加了什么东西?
...全文
相关推荐
DirectX 变换实例
在这个“DirectX 变换实例”中,我们聚焦于如何使用Direct3D,DirectX的一个子组件,来实现3D图形的变换和动画效果。首先,我们要理解Direct3D中的基本概念。
DirectX中Sprite锚点与变换技术详解
DirectX由多个独立但相互协作的组件构成,形成一个完整的多媒体开发框架。以下是其主要模块的简要说明:组件名称主要功能Direct3D负责三维图形渲染,包括几何处理、光照计算与像素着色等Direct2D提供硬件加速的二维图形绘制能力管理键盘、鼠标、游戏手柄等输入设备实现音频播放与混音处理DirectPlay网络通信模块(已逐渐被替代)DXGI管理图形设备与显示器之间的接口交互。
DirectX中如何实现鼠标移动控制视角变换
#### 鼠标输入处理在DirectX中,通过DirectInput可以捕捉到鼠标的移动事件。首先,需要初始化DirectInput对象,并创建一个IDirectInputDevice接口来代表鼠标。
DirectX修复工具及DirectX修复工具增强版
DirectX修复工具是一款针对计算机系统中DirectX组件问题的专业化软件,主要目的是解决因DirectX损坏或缺失导致的游戏运行不顺畅、画面卡顿、声音丢失等问题。
Directx12 游戏开发
对于初学者来说,DirectX和OpenGL之间选择哪一个学习,需根据个人需求和目标平台来决定。2.


