该程序示例包含了一些基本几何体的绘制方法,包括网格、立方体、圆柱体、球。
网格在水面渲染、地形渲染中应用十分广泛,因此学习其相关的绘制方法很有用。圆柱和球有着相似的绘制方法,通过指定的精细等级(slice和stack)来绘制。示例代码包含了所有的绘制算法,以及通过一个程序来展示绘制效果。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-12-23 20:33 D3D11基本几何体绘制
目录 0 2012-12-23 20:30 D3D11基本几何体绘制Common
文件 24 2012-12-22 20:53 D3D11基本几何体绘制CommonAppUtil.cpp
文件 924 2012-12-23 08:37 D3D11基本几何体绘制CommonAppUtil.h
文件 15088652 2012-11-12 01:02 D3D11基本几何体绘制CommonEffects11.lib
文件 5698762 2012-11-12 01:01 D3D11基本几何体绘制CommonEffects11d.lib
文件 13662 2012-12-23 03:08 D3D11基本几何体绘制CommonGeometryGens.cpp
文件 1529 2012-12-23 03:08 D3D11基本几何体绘制CommonGeometryGens.h
文件 2458 2012-12-13 22:20 D3D11基本几何体绘制CommonTimer.cpp
文件 908 2012-12-13 21:41 D3D11基本几何体绘制CommonTimer.h
文件 11395 2012-12-23 07:32 D3D11基本几何体绘制CommonWinApp.cpp
文件 2337 2012-12-23 07:36 D3D11基本几何体绘制CommonWinApp.h
目录 0 2012-12-23 08:40 D3D11基本几何体绘制FX
文件 4557 2012-12-23 07:53 D3D11基本几何体绘制FXBasicColor.cod
文件 575 2012-12-23 08:29 D3D11基本几何体绘制FXBasicColor.fx
文件 1620 2012-12-23 08:38 D3D11基本几何体绘制FXBasicColor.fxo
文件 268288 2012-12-23 20:32 D3D11基本几何体绘制GeoDraw.exe
文件 880 2012-12-23 03:22 D3D11基本几何体绘制GeoDraw.sln
文件 7108 2012-12-23 20:32 D3D11基本几何体绘制GeoDraw.vcxproj
文件 2104 2012-12-23 08:55 D3D11基本几何体绘制GeoDraw.vcxproj.filters
文件 12717 2012-12-23 20:26 D3D11基本几何体绘制Main.cpp
文件 382 2012-12-23 20:38 D3D11基本几何体绘制
eadme.txt
#include
#include
#include
#include
#include
#include
#include
using namespace std;
struct Vertex
{
XMFLOAT3 pos;
XMFLOAT4 color;
};
class GeoDraw: public WinApp
{
public:
GeoDraw(HINSTANCE hInst std::wstring title = L“D3D11基本几何体绘制“ int width = 640 int height = 480);
~GeoDraw();
bool Init(); //重写
bool Update(float delta); //必须重写
bool Render(); //必须重写
//重写鼠标操作函数
void onmousedown(WPARAM btnState int x int y);
void onmouseup(WPARAM btnState int x int y);
void onmousemove(WPARAM btnState int x int y);
private:
//读取Effect文件,创建Effect接口
bool BuildFX();
//创建InputLayout
bool BuildInputLayout();
//创建顶点、索引缓冲区
bool BuildBuffers();
private:
ID3D11InputLayout *m_inputLayout;
//顶点、索引缓冲区
//在这个程序中,我们把所有图形的顶点/索引放在一个缓冲区中
//在绘制相应图形时,指定通过该图形在缓冲区中的起始位置和索引个数来找到对应的缓冲区位置
ID3D11Buffer *m_VB;
ID3D11Buffer *m_IB;
ID3DX11Effect *m_fx;
ID3DX11EffectMatrixVariable *m_fxWorldViewProj;
//该程序中绘制的几种几何图形:网格、立方体、球、圆柱
GeoGen::MeshData m_grid;
GeoGen::MeshData m_box;
GeoGen::MeshData m_sphere;
GeoGen::MeshData m_cylinder;
//每个几何体在顶点、索引缓冲区中的起始位置
UINT m_gridVStart m_gridIStart;
UINT m_boxVStart m_boxIStart;
UINT m_sphereVStart m_sphereIStart;
UINT m_cylinderVStart m_cylinderIStart;
//每个几何体的世界变换矩阵:
//网格
XMFLOAT4X4 m_gridWorld;
//立方体
XMFLOAT4X4 m_boxWorld;
//5个球
XMFLOAT4X4 m_sphereWorld[5];
//4个圆柱
XMFLOAT4X4 m_cylinderWorld[4];
//视角矩阵和投影矩阵
XMFLOAT4X4 m_view;
XMFLOAT4X4 m_proj;
POINT m_lastPos; //上一次鼠标位置,用于跟踪鼠标位移
float m_theta m_phy; //用于控制相机位置(相机处于一个球面上)
float m_radius; //相机所处球面半径
};
GeoDraw::GeoDraw(HINSTANCE hInst std::wstring title int width int height):WinApp(hInsttitlewidthheight)
m_inputLayout(NULL)
m_VB(NULL)
m_IB(NULL)
m_fx(NULL)
m_fxWorldViewProj(NULL)
m_theta(XM_PI*1.5f)
m_phy(XM_PI*0.4f)
m_radius(20.f)
{
//在这里初始化各个物体的世界变换矩阵
//网格
XMMATRIX gridWorld = XMMatrixIdentity();
XMStoreFloat4x4(&m_gridWorldgridWorld);
//立方体
XMMATRIX boxWorld = XMMatrixTranslation(0.f0.75f0.f);
XMStoreFloat4x4(&m_boxWorldboxWorld);
//第5个球
XMMATRIX sphereWorld = XMMatrixTranslation(0.f3.5f0.f);
XMStoreFloat4x4(&m_sphereWorld[4]sphereWorld);
//4个圆柱和4个球(位于4个对称点上)
for(UINT i=0; i<2; ++i)
{
for(UINT j=0; j<2; ++j)
{
XMMATRIX cylinderWorld = XMMatrixTranslation(-5.f+i*10.f1.f-5.f+j*10.f);
XMStoreFloat4x4(&m_cylinderWorld[i*2+j]cylinderWorld);
XMMATRIX sphereWorld = XMMatrixTranslation(-5.f+i*10.f4.f-5.f+j*10.f);
XMStoreFloat4x4(&m_sphereWorld[i*2+j]sphereWorld);
}
}
}
GeoDraw::~GeoDraw()
{
SafeRelease(m_inputLayout);
SafeRelease(m_IB);
SafeRelease(m_VB);
SafeRelease(m_fx);
}
bool GeoDraw::Init()
{
//这里重写了父类中的Init()函数
//WinApp::Init(),这句话必须加上
if(!WinApp::Init())
return false;
//这后面添加程序所需的初始化
if(!BuildFX())
retur
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-12-23 20:33 D3D11基本几何体绘制
目录 0 2012-12-23 20:30 D3D11基本几何体绘制Common
文件 24 2012-12-22 20:53 D3D11基本几何体绘制CommonAppUtil.cpp
文件 924 2012-12-23 08:37 D3D11基本几何体绘制CommonAppUtil.h
文件 15088652 2012-11-12 01:02 D3D11基本几何体绘制CommonEffects11.lib
文件 5698762 2012-11-12 01:01 D3D11基本几何体绘制CommonEffects11d.lib
文件 13662 2012-12-23 03:08 D3D11基本几何体绘制CommonGeometryGens.cpp
文件 1529 2012-12-23 03:08 D3D11基本几何体绘制CommonGeometryGens.h
文件 2458 2012-12-13 22:20 D3D11基本几何体绘制CommonTimer.cpp
文件 908 2012-12-13 21:41 D3D11基本几何体绘制CommonTimer.h
文件 11395 2012-12-23 07:32 D3D11基本几何体绘制CommonWinApp.cpp
文件 2337 2012-12-23 07:36 D3D11基本几何体绘制CommonWinApp.h
目录 0 2012-12-23 08:40 D3D11基本几何体绘制FX
文件 4557 2012-12-23 07:53 D3D11基本几何体绘制FXBasicColor.cod
文件 575 2012-12-23 08:29 D3D11基本几何体绘制FXBasicColor.fx
文件 1620 2012-12-23 08:38 D3D11基本几何体绘制FXBasicColor.fxo
文件 268288 2012-12-23 20:32 D3D11基本几何体绘制GeoDraw.exe
文件 880 2012-12-23 03:22 D3D11基本几何体绘制GeoDraw.sln
文件 7108 2012-12-23 20:32 D3D11基本几何体绘制GeoDraw.vcxproj
文件 2104 2012-12-23 08:55 D3D11基本几何体绘制GeoDraw.vcxproj.filters
文件 12717 2012-12-23 20:26 D3D11基本几何体绘制Main.cpp
文件 382 2012-12-23 20:38 D3D11基本几何体绘制
eadme.txt
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)