1直接使用vertex buffer绘制

使用IDirect3DDevice9::DrawPrimitive绘制

HRESULT DrawPrimitive(

[in]  D3DPRIMITIVETYPE PrimitiveType,--原语类型

[in]  UINT StartVertex,--顶点缓存中第一个顶点的index

[in]  UINT PrimitiveCount --绘制的原语的数量(注意不是顶点的数量)最大值查询D3DCAPS9

);

2. 配合indice绘制

3.0 顶点buffer

struct CUSTOMVERTEX
{
        float x,y,z;--先定义顶点的数据结构,这里就是三维位置,还可以定义材质、贴图、法向等
};
 
CUSTOMVERTEX Vertices[] = 
{
        {-5.0, -5.0, 0.0},
        { 0.0,  5.0, 0.0},
        { 5.0, -5.0, 0.0},
        {10.0,  5.0, 0.0},
        {15.0, -5.0, 0.0},
        {20.0,  5.0, 0.0}
};

3.1原语

D3DPT_POINTLIST 点集

D3DPT_LINELIST 孤立的线集

D3DPT_LINESTRIP 首尾连接的线

D3DPT_TRIANGLELIST 孤立三角形集

D3DPT_TRIANGLESTRIP

D3DPT_TRIANGLEFAN

3.2 clear

使用IDirect3DDevice9::Clear( [in]  DWORD Count,--rect的数量

[in]  const D3DRECT *pRects, --窗口内清除的矩形区域,可以有多个,null代表整个窗口,此时上面要用0

[in]  DWORD Flags,--清楚的surface标志 D3DCLEAR_STENCIL D3DCLEAR_TARGET D3DCLEAR_ZBUFFER

[in]  D3DCOLOR Color,--将表面颜色清到这个值

[in]  float Z,--z buffer

[in]  DWORD Stencil --stencil buffer

)可以清楚某个surface

3.3绘制的一般步骤

1设置buffer

2调用IDirect3DDevice9::DrawPrimitive从buffer绘制原语

不同的顶点元素可以输入到不同的流中,这样可以避免一种元素(如法向)改变不用重进送入其他元素

另外还有一种方法是直接从用户的缓存处而不是从显卡缓存绘制,调用IDirect3DDevice9::DrawPrimitiveUP

IDirect3DDevice9::DrawIndexedPrimitiveUP进行直接从CPU内存的绘制,这种绘制每次绘制要从内存取数据,但是有利有弊,它也可以省略了从显存取回数据的步骤,某些高频率更改顶点数据的操作用这种反而更快

 

3.4present a scene

1.程序不能直接锁住或者渲染到前缓存。前缓存是有后缓存交换过来的。通过IDirect3DDevice9::GetFrontBufferData可以获取截图

2.如果想从同一个设备中创建多个视口,那么就需要create多个swapchain

3.4.1 alpha blending

srcapha invsrcalpha

转载于:https://www.cnblogs.com/weizhixiao/archive/2012/11/22/5697336.html

D3D9学习笔记(四) 绘制相关推荐

  1. 吴恩达《机器学习》学习笔记四——单变量线性回归(梯度下降法)代码

    吴恩达<机器学习>学习笔记四--单变量线性回归(梯度下降法)代码 一.问题介绍 二.解决过程及代码讲解 三.函数解释 1. pandas.read_csv()函数 2. DataFrame ...

  2. Adobe Illustrator学习笔记一 – 绘制K33图

    Adobe Illustrator学习笔记一 – 绘制图论中的K33图 作者: kagula 时间 2020-11-14 概要        阅读对象为非美工专业的计算机程序员, 所以对程序员来说显而 ...

  3. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  4. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  5. RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决)

    RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决) 参考文章: (1)RabbitMQ学习笔记四:RabbitMQ命令(附疑难问题解决) (2)https://www.cnblogs. ...

  6. JSP学习笔记(四十九):抛弃POI,使用iText生成Word文档

    POI操作excel的确很优秀,操作word的功能却不敢令人恭维.我们可以利用iText生成rtf文档,扩展名使用doc即可. 使用iText生成rtf,除了iText的包外,还需要额外的一个支持rt ...

  7. Ethernet/IP 学习笔记四

    Ethernet/IP 学习笔记四 EtherNet/IP Quick Start for Vendors Handbook (PUB213R0): https://www.odva.org/Port ...

  8. OpenCV学习笔记四-image的一些整体操作

    title: OpenCV学习笔记四-image的一些整体操作 categories: 编程 date: 2019-08-08 12:50:47 tags: OpenCV image的一些操作 sP4 ...

  9. esp8266舵机驱动_arduino开发ESP8266学习笔记四—–舵机

    arduino开发ESP8266学习笔记四-–舵机 使用时发现会有ESP8266掉电的情况,应该是板上的稳压芯片的限流导致的,观测波形,发现当舵机运转时,电源线3.3V不再是稳定的3.3V,大概是在3 ...

最新文章

  1. 无线AP与无线交换机的区别
  2. CVPR 2020:如何写一篇好论文?
  3. Serverless 实战 —— Funcraft + OSS + ROS 进行 CI/CD
  4. nacicat for mysql查询_navicat for mysql怎么用
  5. Consecutive Factors (20)
  6. git如何查看和切换账号
  7. 新AlphaGo这么强!36小时从0自学成大师,100:0把李世乭版秒成渣渣 | Nature论文
  8. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(11)-系统日志和异常的处理①...
  9. mysql在缺省状态下_MYSQL面试题
  10. 双重认证 也不安全:Gmail、Yahoo mail 已被攻破!
  11. 77-CCI,Commodity Channel Index,商品通道指标.(2015.7.1)
  12. matlab拉普拉斯算子边缘提取_【图像处理】OpenCV系列十 --- 边缘检测之Laplacian算子...
  13. python reportlab
  14. MSN的聊天记录在哪里找到?
  15. avformat_seek_file函数介绍
  16. 用户、角色、权限数据库设计
  17. 快递物流查询,分析派件时效,查找正在派件的单号
  18. 书记员计算机操作基础知识考试,书记员打字考试怎么考?有哪些形式?
  19. 施密特正交化(Schmidt)
  20. 程序员的苦与痛,又有谁懂!改完这个bug就离职,网友:大佬牛逼

热门文章

  1. 多线程编程实践——实现生产者、消费者模型
  2. 第八篇:Docker镜像结构原理
  3. 一种ui app写法
  4. 优质手机APP开发公司的特点
  5. windows下编译及使用libevent
  6. 使用php分页类实现简单分类
  7. 程序猿工作效率的影响因素和管理者怎样推断
  8. find命令中的print0和xargs -0
  9. Java并发——线程间通信与同步技术
  10. php 实现 html转js