[转]DrawPrimitive 详解Direct3DDevice8
Direct3DDevice8 函数
05-39 DrawPrimitive 详解
费了好大的劲,终于搞清楚 DirectX 3D 三维图像中 DrawPrimitive 的用法(自嘲:未必)。
DrawPrimitive 是 Direct3DDevice8 对象的一个绘图方法:根据指定的顶点数组,绘制指定的图形:点、线,或三角形,从而组成复杂的图像。在 VB 中用法如下:
DrawPrimitive PrimitiveType, StartVertex, PrimitiveCount
参数说明:
StartVertex:Long 类型,指定从哪个顶点开始绘制图形
PrimitiveCount:Long 类型,指定绘制的图形个数
PrimitiveType: CONST_D3DPRIMITIVETYPE 枚举类型,要绘制的图形类型。共有 6 个取值:
1 D3DPT_PointList显示所有顶点
2 D3DPT_LineList 不相连的线段,线段的总数 = Int(顶点数/2)
顶点连线的方式:0-1,2-3,4-5,等
3 D3DPT_LineStrip首尾相连的线段,线段的总数 = 顶点数-1
顶点连线的方式:0-1,1-2,2-3,3-4,4-5,等
4 D3DPT_TriangleList 不相连的三角形,三角形总数 = Int(顶点数/3)
三角形组成的方式:0-1-2,3-4-5,等。每个三角形的的第三个点应在前两个点顺时针方向的一侧,否则会忽略此三角形。
下图中的0-1-2三角形,假定一人站在点0,面向点1,点2在顺时针方向(右方),所以此三角形会正确绘出。
3-4-5三角形中,站在点3,面向点4,点5在逆时针方向(上方),所以此三角形会被忽略。
5 D3DPT_TriangleStrip 以一条边为公共边的三角形,三角形总数 = 顶点数-2
三角形组成的方式:0-1-2(顺),1-2-3(逆),2-3-4(顺),3-4-5(逆),4-5-6(顺),等
第1个三角形的点遵循顺时针原则,第2个三角形的点遵循逆时针原则,以此类推,第5个三角形应遵循顺时针原则。下图中点6在逆时针方向上,所以被忽略。
6 D3DPT_TriangleList 以顶点0为圆心,顺时针扇形排列的一系列三角形,三角形总数 = 顶点数-2。
三角形组成的方式:0-1-2,0-2-3,0-4-5,等。三角形的点全部遵循顺时针原则,否则忽略此三角形。
下图三角形 0-6-7 中的点7在逆时针方向上,所以被忽略。0-7-8 符合顺时针原则,所以也会正确绘出。
注意:以上讨论基于“消隐设置”为默认值的情况,可更改“消隐设置”的状态:
MyDirect3DDevice8.SetRenderState D3DRS_CULLMODE, nMode
nMode的取值:
1 D3DCULL_NONE 无背面消隐,不忽略任何三角形
2 D3DCULL_CW 顺时针消隐,与上文所说效果相反
3 D3DCULL_CCW 逆时针消隐(默认,与上文所说效果同)
演示程序截图:
用作纹理贴图的图片文件:纹理图1.jpg
原文:http://hi.baidu.com/100bd/item/516e52d9751d1356d63aae12
[转]DrawPrimitive 详解Direct3DDevice8的更多相关文章
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解
前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
- Git初探--笔记整理和Git命令详解
几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...
- Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...
- Node.js npm 详解
一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...
随机推荐
- hdu 5396 Expression
考虑到此题麻烦了某hust大神&体现出了自己数学能力的欠缺 虽然最近一直比较忙 还是把这题的题解写下来吧 首先看完数据范围后 应该有不少人会反应到是$n^3$的DP 以$F[i][j]$表示从 ...
- About Intel® Processor Numbers
http://www.intel.com/content/www/us/en/processors/processor-numbers.html About Intel® Processor Numb ...
- Windows 08R2_AD图文详解
目录 目录 软件环境 Active Directory域服务 AD的应用 创建ADDS域 使用Windows窗口来创建ADDS域控制器 使用Powershell来创建ADDS域控制器 检查ADDC域控 ...
- 显示等待WebDriverWait+lambda
代码,关键代码标红 参考文章:https://www.cnblogs.com/yoyoketang/p/6517477.html #coding:utf-8 ''' 这里写了一个百度搜索页的pageo ...
- springboot 尚桂谷学习笔记03
------spring boot 与日志------ 日志框架: 市面上的日志框架: jul jcl jboss-logging logback log4j log4j2 ...... 左边一个门面 ...
- hbase之RPC详解
Hbase的RPC主要由HBaseRPC.RpcEngine.HBaseClient.HBaseServer.VersionedProtocol 5个概念组成. 1.HBaseRPC是hbase RP ...
- shell中#*,##*,#*,##*,% *,%% *的含义及用法
介绍下Shell中的${}.##和%%使用范例,本文给出了不同情况下得到的结果.假设定义了一个变量为:代码如下:file=/dir1/dir2/dir3/my.file.txt可以用${ }分别替换得 ...
- db2 连接数据库与断开数据库
连接数据库: connect to db_name user db_user using db_pass 断开连接: connect resetdisconnect current quit是退出交 ...
- 迄今为止把同步/异步/阻塞/非阻塞/BIO/NIO/AIO讲的这么清楚的好文章(快快珍藏)
常规的误区 假设有一个展示用户详情的需求,分两步,先调用一个HTTP接口拿到详情数据,然后使用适合的视图展示详情数据. 如果网速很慢,代码发起一个HTTP请求后,就卡住不动了,直到十几秒后才拿到HTT ...
- mysql各种join连接查询
最近项目用到了几次sql join查询 来满足银行变态的需求:正好晚上自学时,看到了相关视频,所以记录下相关知识,下次再用时,根据如下图片,便可知道 怎么写sql; 注意点: 在join操作中的 on ...