关于DrawIndexedPrimitive函数的调用

函数的原型如下所示:

HRESULT DrawIndexedPrimitive(
 [in]  D3DPRIMITIVETYPE Type,
 [in]  INT BaseVertexIndex,
 [in]  UINT MinIndex,
 [in]  UINT NumVertices,
 [in]  UINT StartIndex,
 [in]  UINT PrimitiveCount
);

<1>  Type:D3DPRIMITIVETYPE枚举成员中的一个,表示绘制的图元类型

typedef enum D3DPRIMITIVETYPE {
 D3DPT_POINTLIST       = 1,
 D3DPT_LINELIST        = 2,
 D3DPT_LINESTRIP       = 3,
 D3DPT_TRIANGLELIST    = 4,
 D3DPT_TRIANGLESTRIP   = 5,
 D3DPT_TRIANGLEFAN     = 6,
 D3DPT_FORCE_DWORD     = 0x7fffffff
}D3DPRIMITIVETYPE, *LPD3DPRIMITIVETYPE;

其中D3DPT_POINTLIST表示点列

D3DPT_LINELIST表示线段列

D3DPT_LINESTRIP表示线段带

D3DPT_TRIANGLELIST表示三角面列

D3DPT_TRIANGLESTRIP表示三角面带

D3DPT_TRIANGLEFAN表示扇形面

<2> BaseVertexIndex

顶点缓存中距离第一个顶点的偏移量,这里说的都是顶点缓存中的索引。

BaseVertexIndex is a value that‘s effectively added to every VBIndex stored in the index buffer.

它是要添加到索引缓存中存储的顶点缓存的每一个值上的。

<3> MinIndex

函数调用中最小的索引。这是以0为基础,相对于BaseVertexIndex的索引,当然是针对顶点缓存来说的。

<4> NumVertices

函数调用过程中用到的顶点数,第一个顶点是BaseVertexIndex +MinIndex

<5> StartIndex

当访问顶点缓存的时候用到的第一个索引的的索引,

<6> PrimitiveCount

图元的个数

 

下面几幅图最能说明BaseVertexIndex,MiniIndex,StartIndex,以及NumVertices的含义

<1> 当BaseVertexIndex =0

此时的函数调用如下所示:

DrawIndexedPrimitive( D3DPT_TRIANGLELIST, // PrimitiveType
                    0,                  // BaseVertexIndex
                    0,                  // MinIndex
                    4,                  // NumVertices
                    3,                  // StartIndex
                    1 );                // PrimitiveCount

<2>当BaseVertexIndex ≠0

此时索引缓存中的没一个值都要加上一个BaseVertexIndex的值来表示真正的索引。函数的调用如下所示:

DrawIndexedPrimitive(D3DPT_TRIANGLELIST, // PrimitiveType
                    50,                 // BaseVertexIndex
                    0,                  // MinIndex
                    4,                  // NumVertices
                    3,                  // StartIndex
                    1 );   

关于DrawIndexedPrimitive函数的调用

时间: 2025-01-10 16:38:42

关于DrawIndexedPrimitive函数的调用的相关文章

深入剖析php执行原理(4):函数的调用

本章开始研究php中函数的调用和执行,先来看函数调用语句是如何被编译的. 我们前面的章节弄明白了函数体会被编译生成哪些zend_op指令,本章会研究函数调用语句会生成哪些zend_op指,等后面的章节再根据这些op指令,来剖析php运行时的细节. 源码依然取自php5.3.29. 函数调用 回顾之前用的php代码示例: <?php function foo($arg1) { print($arg1); } $bar = 'hello php'; foo($bar); 在函数编译一章里已经分析过,

javascript学习笔记(二):定义函数、调用函数、参数、返回值、局部和全局变量

定义函数.调用函数.参数.返回值 关键字function定义函数,格式如下: function 函数名(){ 函数体 } 调用函数.参数.返回值的规则和c语言规则类似. 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <meta chaset="UTF-8"> 5 <title></title> 6 </head> 7 <body

MFC浅析(7) CWnd类虚函数的调用时机、缺省实现

CWnd类虚函数的调用时机.缺省实现 FMD(http://www.fmdstudio.net) 1. Create 2. PreCreateWindow 3. PreSubclassWindow 4. PreTranslateMessage 5. WindowProc 6. OnCommand 7. OnNotify 8. OnChildNotify 9. DefWindowProc 10. DestroyWindow 11. PostNcDestroy CWnd作为MFC中最基本的与窗口打交

函数的调用优化

函数的调用优化 在类中有四大成员函数,构造函数,拷贝构造函数,赋值函数和析构函数,在类外进行实例化时,若调用函数的方法不当则会产生时间和空间的浪费. 以下,将用几个小栗子来说明函数的调用优化的常见办法 类: class Test { public: Test(int d = 0) : _data(d) { cout << "Create Test Object:"<<this << endl; } Test(const Test&x) :_d

Entity Framework 6 Recipes 2nd Edition(11-4)译 -&gt; 在”模型定义”函数里调用另一个”模型定义”函数

11-4.在”模型定义”函数里调用另一个”模型定义”函数 问题 想要用一个”模型定义”函数去实现另一个”模型定义”函数 解决方案 假设我们已有一个公司合伙人关系连同它们的结构模型,如Figure 11-4所示: Figure 11-4. A model representing the associate types in a company together with the reporting association 在我们的虚拟的公司里, , team members被一个team lea

回调函数中调用类中的非静态成员变量或非静态成员函数

有关这方面的问题,首先说一点: 回调函数必须是静态成员函数或者全局函数来实现回调函数,大概原因是普通的C++成员函数都隐含了一个函数参数,即this指针,C++通过传递this指针给成员函数从而实现函数可以访问类的特定对象的数据成员.由于this指针的原因,使得一个普通成员函数作为回调函数时就会因为隐含的this指针问题使得函数参数个数不匹配,从而导致回调函数编译失败. 基于上面的理论,如何在类中封装回调函数呢? 回调函数只能是全局函数或者静态成员函数,但是由于全局函数会破坏封装性,所以只能用静

关于编译型语言函数的调用(三)

接上文:http://blog.csdn.net/prsniper/article/details/40653235 类delete就不说了,有兴趣的朋友自己跟踪看看吧,提示一下:析构函数也有参数和返回值. 下面我们看下裸函数,裸函数从执行效率上是可以与汇编语言媲美的,然而它不太好逆过来说,我们就顺着说吧 前面说得构造函数的临时堆栈,恢复寄存器等等,有人给了个名称叫prolog和epilog 而裸函数并没有自动编译这些部分,其实说白了,裸函数相当于汇编语言中的一个标签,其调用受前面几种约定约束

C++之类的成员函数的调用 vs. 普通函数的调用

首先请看下面的语句: Point3d obj; Point3d *ptr = &obj; 当使用上述指针或者对象调用成员函数Func()时,会有: obj.Func(); ptr->Func(); 上述调用的背后到底完成了一些什么呢? 假设Func函数的定义如下: Point3d Point3d::Func() const { Float a = getA(); Point3d ret; ret._x = _x/a; ret._y = _y/a; ret._z = _z/a; return

C++中拷贝构造函数和赋值函数被调用的时机

一.拷贝构造函数被调用的时机: 1. 当用类的一个对象去初始化该类的另一个对象(或引用)时系统自动调用拷贝构造函数实现拷贝赋值. 2. 若函数的形参为类对象,调用函数时,实参赋值给形参,系统自动调用拷贝构造函数. 3. 当函数的返回值是类对象时,系统自动调用拷贝构造函数. 二.赋值函数被调用的时机: 当用一个对象赋值给另一个对象时 注意一.二中初始化和赋值的区别 C++中拷贝构造函数和赋值函数被调用的时机,布布扣,bubuko.com