DirectX学习笔记(四):利用D3DX网格数据结构绘制可旋转茶壶

本文是DirectX学习笔记系列的第四篇,介绍如何使用D3DX库中的网格数据结构创建并绘制一个可旋转的茶壶。通过取景变换、投影、绘制状态设置和旋转操作,详细阐述了3D物体在DirectX中的呈现过程。
摘要由CSDN通过智能技术生成

前言:

在上篇文章(DirectX学习笔记三)中,我详细的说明了如何利用线框模式绘制可旋转的正方体。链接:点击打开链接。但是应该看到的是,如果我们通过创建三角形单元来创建3D物体是十分繁琐的事情。幸运的是,在D3DX库中提供了一些用于生成简单3D物体的网格数据方法。

如:利用网格数据创建一个茶壶:

1. 我们需要使用ID3DXMesh网格数据结构接口来创建我们的茶壶网格数据,这时我们需要使用此函数:


HRESULT D3DXCreateTeapot(LPDIRECT3DDEVICE9 pDevice, LPD3DXMESH* ppMesh, LPD3DXBUFFER* ppAdjacency)

下面是一个使用此函数的例子:

ID3DXMesh *mesh = 0;
D3DXCreateTeapot(_device, &mesh, 0);

那么我们为了绘制一个可旋转的茶壶都需要做哪些工作呢:


1.生成网格数据:

D3DXCreateTeapot(Device, &Teapot, 0);

2.取景变换:


在当摄像机的位置和朝向任意时,进行一些操作会造成效率低下很是麻烦。为了简化运算,我们将摄像机变换到世界坐标系的原点,并旋转摄像机使其光轴与世界坐标系的z轴朝向一致。要特别注意的是,世界中的所有物体都会随之摄像机变换,以保证摄像机的视场恒定。
我们先使用D3DXMatrixLookAtLH(...)函数来获取一个取景变换矩阵,然后利用::SetTransform(..)方法设定:

//取景变换
	D3DXVECTOR3 position(0.0f, 0.0f, -5.0f);
	D3DXVECTOR3 target(0.0f, 0.0f, 0.0f);
	D3DXVECTOR3 up(0.0f, 1.0f, 0.0f);
	D3DXMATRIX V;
	D3DXMatrixLookAtLH(&V, &position, &target, &up)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值