[转]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 ...
随机推荐
- 【SpingBoot】 测试如何使用SpringBoot搭建一个简单后台1
很久没写博客了,最近接到一个组内的测试开发任务是做一个使用SpringBoot 开发一个后台程序(还未完成),特写感想记录一下 1. 为什么选择SpringBoot ? 首先是目前很多公司的后台还是J ...
- day 101 天
一.新建项目 +安装bootstrap 安装bootstrap组件 二.Vue-route的使用 1. router.js配置文件 2. vue文件 3. Header.js文件
- POJ 1410 Intersection (计算几何)
题目链接:POJ 1410 Description You are to write a program that has to decide whether a given line segment ...
- HBase–RegionServer宕机恢复原理
Region Server宕机总述 HBase一个很大的特色是扩展性极其友好,可以通过简单地加机器实现集群规模的线性扩展,而且机器的配置并不需要太好,通过大量廉价机器代替价格昂贵的高性能机器.但也正因 ...
- PAT_A1069#The Black Hole of Numbers
Source: PAT A1069 The Black Hole of Numbers (20 分) Description: For any 4-digit integer except the o ...
- js中浅谈this对象(未补充完整)
什么是this? 1.javascript语言中,一切皆为对象(除了 undefined 和 null 之外),运行环境也是对象,所以函数都是在某个对象之中运行,this就是这个对象(环境). 2.t ...
- Windows Server 2008 R2 官方简体中文免费企业版/标准版/数据中心版
Windows Server 2008 R2是一款微软发布的Windows服务器操作系统,和之前发布的Windows Server 2008相比功能更为完善运行更为稳定,提升了系统管理弹性.虚拟化.网 ...
- P1001 A+B Problem
下面我们要展示这个题的玄学做法!!!@cjx!!! #include<iostream> #define chen using namespace std; #define jia int ...
- python 批量爬取四级成绩单
使用本文爬取成绩大致有几个步骤:1.提取表格(或其他格式文件——含有姓名,身份证等信息)中的数据,为进行准考证爬取做准备.2.下载准考证文件并提取出准考证和姓名信息.3.根据得到信息进行数据分析和存储 ...
- java虚拟机规范(se8)——class文件格式(三)
4.5 字段 字段使用field_info结构来描述. 在同一个class文件中的两个字段不能有相同的名称和描述符. 结构的格式如下: field_info { u2 access_flags; u2 ...