当前位置: 首页 > news >正文

VS2022+DirectX9坐标系与基本图元之基本图元(BasePrimitive)_0302

图元类型是DirectX9绘制中所需要的最重要的类型,不同的类型,决定了是如何绘制顶点数据的(点,线,三角形),通过几个例子来说明类型之间的不同。

D3DPRIMITIVETYPE 图元类型

typedef enum D3DPRIMITIVETYPE {D3DPT_POINTLIST = 1, // 点列表D3DPT_LINELIST = 2,  // 线列表D3DPT_LINESTRIP = 3, // 线带D3DPT_TRIANGLELIST = 4, // 三角形列表D3DPT_TRIANGLESTRIP = 5, // 三角形带D3DPT_TRIANGLEFAN = 6 // 三角形扇
} D3DPRIMITIVETYPE;

D3DPT_POINTLIST 点列表

每个订单单独作为一个点(不连接),适用场景(粒子效果、星点、标点)

D3DPT_LINELIST 线列表

每 2 个顶点组成一条独立的直线(不共享顶点),适用场景,离散的线段(如坐标轴、网格线)

D3DPT_LINESTRIP 线带

顶点按顺序连接成连续的折线(每个新顶点与前一个顶点组成新线段,共享顶点)。适用场景(连续曲线,如轨迹线、轮廓线)

D3DPT_TRIANGLELIST 三角形列表

每 3 个顶点组成一个独立的三角形(不共享顶点)。 场景:独立的三角形(如不规则碎片、离散多边形)

D3DPT_TRIANGLESTRIP 三角形带

从第 3 个顶点开始,每个新顶点与前两个顶点组成新三角形(共享两条边)。场景:连续的三角形带(如地形网格、曲面)

D3DPT_TRIANGLEFAN 三角形扇

第一个顶点为中心,每个新顶点与中心点和前一个顶点组成新三角形(共享中心点)。场景:扇形、圆形、多边形填充(如圆盘、圆锥底面)

示例

同样的顶点,渲染不同的图元类型会渲染出不同的图形。

//顶点数据
CUSTOMVERTEX vertices[] =
{{  50.0f, 250.0f, 0.5f, 1.0f, 0xffff0000, },{ 150.0f,  50.0f, 0.5f, 1.0f, 0xffff0000, },{ 250.0f, 250.0f, 0.5f, 1.0f, 0xffff0000, },{ 350.0f,  50.0f, 0.5f, 1.0f, 0xffff0000, },{ 450.0f, 250.0f, 0.5f, 1.0f, 0xffff0000, },{ 550.0f, 50.0f,  0.5f, 1.0f, 0xffff0000, }
};

可以通过图来看到这些顶点数据绘制出来的是什么样的基本内容,可以看到一共是6个顶点,刚好能绘制出两个三角形,有序列号0-5。

以上是顶点数据,下面是六种不同类型的图元渲染

switch (g_iType)  //选择绘制图元的类型
{
case 1:  //点列表g_pd3dDevice->DrawPrimitive(D3DPT_POINTLIST, 0, 6);break;case 2:  //线段列表g_pd3dDevice->DrawPrimitive(D3DPT_LINELIST, 0, 3);break;case 3:   //线段条带g_pd3dDevice->DrawPrimitive(D3DPT_LINESTRIP, 0, 5);break;case 4:   //三角形列表g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 2);break;case 5:   //三角形条带g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 4);break;case 6: //三角形扇g_pd3dDevice->DrawPrimitive(D3DPT_TRIANGLEFAN, 0, 4);break;
}

D3DPT_POINTLIST 点列表

通过点击数字按键1可以看到如下的图:


是可以看到有六个顶点被显示的,所以,这个图元类型就是显示各个顶点。

D3DPT_LINELIST 线段列表

通过点击数字按键2可以看到如下的图:


可以看到有三个斜着的红色的线条。
它把顶点数据分成了三部分(01,23,45)这三段,也印证了它们不共享顶点。

D3DPT_LINESTRIP 线段条带

通过点击数字按键3可以看到如下的图:


可以看到一条折线。
它把顶点数据分成了一条折线,实际上就是把D3DPT_LINELIST 线段列表连接了起来。
(01,12,23,34,45)

D3DPT_TRIANGLELIST 三角形列表

通过点击数字按键4可以看到如下的图:


这个跟提供的基础顶点数据结构示例图差不多一样,就是两个三角形的六个顶点。

D3DPT_TRIANGLESTRIP 三角形条带

通过点击数字按键5可以看到如下的图:


可以看到它自己根据顶点又生成了两个三角形,构成了三角形带状形状。

D3DPT_TRIANGLEFAN 三角形扇

通过点击数字按键6可以看到如下的图:


只能看个示例,具体应该有内部连接导致。

总结

对图元类型有了一个较为深层次的理解了。

git仓库

https://github.com/kesshei/direct9Demo/tree/main/03_%E7%AC%AC%E4%B8%89%E7%AB%A0%20%E5%9D%90%E6%A0%87%E7%B3%BB%E4%B8%8E%E5%9F%BA%E6%9C%AC%E5%9B%BE%E5%85%83/02_BasicPrimitive
https://gitee.com/kesshei/direct9Demo/tree/main/03_%E7%AC%AC%E4%B8%89%E7%AB%A0%20%E5%9D%90%E6%A0%87%E7%B3%BB%E4%B8%8E%E5%9F%BA%E6%9C%AC%E5%9B%BE%E5%85%83/02_BasicPrimitive
http://www.dtcms.com/a/508757.html

相关文章:

  • 网站建设实训总结及体会网站开发与电子商务
  • 为什么MainWindow.xaml绑定的datacontext,EtherCATSuiteCtrl.xaml直接用了?
  • 建设企业网站综合考虑网页打不开用什么浏览器
  • 网站建设需要掌握什么知识网络营销工具的使用
  • 贪心算法深度解析:从理论到实战的完整指南
  • 基于Langchain的实践(电商客服)
  • 百度首页排名优化公司沈阳网站搜索引擎优化
  • 旅游网站建设初衷新网站应该怎么做
  • 网站做短信验证需要多少钱衡水学校网站建设
  • (立控信息LKONE)智能仓储管理,高效・安全・精准,一 “智” 到位
  • 内存管理C++
  • 建网站算法企业网站设计规范
  • 建设部网站官网 施工许可wordpress可以装多少会员数据库
  • DeepCFD+:一种工业级 CFD 代理模型训练框架【深度学习+流体力学】
  • 设计师服务平台鱼巴士医疗网站优化公司
  • 网站页面设计需要遵循的六大原则wordpress 图片链接
  • 网站网页设计培训机构浙江住房和城乡建设厅网站
  • ElectrumX介绍
  • miniAPP图片上传等api触发项目onhide等周期函数问题
  • 广州专业网站网络营销学院
  • 网站友链怎么做大鹏新网站建设
  • AI智能体:企业级智能体管理解决方案
  • 温州网站开发培训滨海网站建设公司
  • 网站建设吉金手指排名12恶意点击别人的网站
  • git note
  • 国外炫酷网站大连网站开发建
  • BugKu Web渗透之 文件包含
  • 时间序列数据异常检测算法(1)——传统统计学基础算法
  • 【TI毫米波雷达】适配雷达的Flash芯片选型及QE位的默认值设置,串口回环BUG的解决方案汇总
  • 【 前缀和 单调双向队列 化环为链】P7590 回旋加速器(2021 CoE-II C)|普及+