使用D3DXCreateSphere绘图的步骤

简介:

DX内置的绘制几何图形的函数

D3DX中有几个现成的函数可以绘制常见的3D模型

  • D3DXCreateBox

  • D3DXCreateSphere

  • D3DXCreateCylinder //圆柱

  • D3DXCreateTeapot

  • D3DXCreatePolygon

  • D3DXCreateTorus //圆环体,类似于面包圈

这些函数有三个参数是一样的,它们分别是

1. 第一个参数 LPDIRECT3DDEVICE9 pDevice //这是用来绘图的device

2. 倒数第二个参数LPD3DXMESH * ppMesh //用来存储创建后的mesh

3. 最后一个参数LPD3DXBUFFER * ppAdjacency //用来优化mesh用的,我们这里设置为null即可

其他的参数则与具体的模型有关,比如Box要指定尺寸,Sphere要指定半径等。

下面以D3DXCreateSphere为例讲解一下使用这些函数的一般步骤

原型

复制代码
HRESULT D3DXCreateSphere(
  LPDIRECT3DDEVICE9 pDevice,
  FLOAT Radius,
  UINT Slices,
  UINT Stacks,
  LPD3DXMESH 
*  ppMesh,
  LPD3DXBUFFER 
*  ppAdjacency
);
复制代码

 注:参数Slices是指竖向的切面个数,Stacks是指横向的切面个数,你可把Shpere想象成一个地球仪,而Slices和Stacks分别对应纬线和经线就好理解了,这两个参数实际上决定了球体的细腻程度,因为切面越多,球体就越圆。

具体步骤:

声明ID3DXMesh*变量

声明一个mesh变量来存储创建后的mesh,因为每种模型实际都是一个mesh,这个变量一般声明为全局的,因为绘制的过程需要在几个函数内分别完成

1  ID3DXMesh *  mesh  =   0 ;

 

创建几何图形 

创建mesh,也就是调用上面这些函数,注意,创建mesh要在D3D Device可用以后进行,因为以上函数的第一个参数都是device,一般在InitiD3D或者OnCreateDevice函数中进行。

1  D3DXCreateSphere(pd3dDevice, 5.0f 20 20 & mesh, NULL) ;

 

绘制图形 

一般在Render()函数里面BeginScene与EndScene之间

1  pd3dDevice -> BeginScene();
2          mesh -> DrawSubset( 0 ) ;
3  pd3dDevice -> EndScene();

 

释放资源 

绘制完图形以后,mesh需要释放,一般在Cleanup函数或OnDestroyDevice函数中进行

1  if (mesh  !=  NULL)
2          mesh -> Release();

 


本文转自zdd博客园博客,原文链接:http://www.cnblogs.com/graphics/archive/2009/10/27/1590469.html,如需转载请自行联系原作者

相关文章
|
4天前
|
JSON JavaScript Linux
绘图框架 plotly 知识点补充(绘制子图,图表保存)
绘图框架 plotly 知识点补充(绘制子图,图表保存)
28 13
|
4月前
cavans绘图步骤
cavans绘图步骤
|
12月前
|
数据可视化 关系型数据库 Python
【100天精通Python】Day66:Python可视化_Matplotlib 3D绘图,绘制3D曲面图、3D填充图,3D极坐标图,示例+代码
【100天精通Python】Day66:Python可视化_Matplotlib 3D绘图,绘制3D曲面图、3D填充图,3D极坐标图,示例+代码
189 0
|
C# 图形学
C# GDI+绘图(一)GDI+介绍及基础
最近,项目中,有一块比较发杂的网格,并在网格上绘有各种颜色和文本,在Dev库中并未找到能实现这种功能的现有或可以二次开发的控件,因此,涉及到GDI+绘图这块陌生的领域。下面即时我在本次学习过程中的笔记,本次内容一共分为4篇,分别都有各自的代码或工程文件提供,有需要的朋友可以下载。
|
存储 Go
速绘丨GO富集气泡图绘制方法,利用R语言ggplot2包快速绘制,完整脚本可重复绘图
速绘丨GO富集气泡图绘制方法,利用R语言ggplot2包快速绘制,完整脚本可重复绘图
|
数据可视化 数据挖掘
绘图系列|R-corrplot相关图
绘图系列|R-corrplot相关图
130 0
|
数据可视化
绘图系列|R-VennDiagram包绘制韦恩图
绘图系列|R-VennDiagram包绘制韦恩图
212 0
|
人工智能 数据可视化
如何一步步提高图形 B 格?以 ggplot 绘图为例
如何一步步提高图形 B 格?以 ggplot 绘图为例
130 0
|
机器学习/深度学习 监控 算法
绘制森林资源图的工具介绍
绘制森林资源图的工具介绍
121 0
绘制森林资源图的工具介绍
python 绘图基础--如何绘制多个的子图 and 封装绘图函数(提高绘图效率)
一般来说,我们研究分析一些海温或者降水等要素的的变化规律时,通常会进行季节特征变化分析,这就需要我们绘制不同季节的空间分布图来进行分析,这就需要我们掌握子图的绘制方法。
python 绘图基础--如何绘制多个的子图 and 封装绘图函数(提高绘图效率)