DX11六边形绘制的两种方法以及xjun博客的学习感悟
DX11六边形绘制的两种方法和xj博客的学习感悟
1.(图元类型为D3D11_PRIMITIVE_TOPOLOGY_LINELIST)
Triangle list(左) or triangle strip(右)
该方法通过四个三角形就能拼出一个六边形,则需要十二个顶点。
通过改变顶点个数位置,以及draw函数中的顶点个数的参数以及图元类型就能实现一个六边形
修改代码部分以及运行结果贴图如下:
2.(图元类型为D3D11_PRIMITIVE_TOPOLOGY_STRIP)
Triangle list(左) or triangle strip(右)
该方法特殊在是几边形就需要几个顶点且按照v1,v2,v3;v2,v4,v3诸如此类的顺时针顺序画出每个三角形,所以通过六个顶点就能拼出一个六边形,节约了一些空间。
通过改变顶点个数位置,以及draw函数中的顶点个数的参数以及图元类型就能实现一个六边形
修改代码部分以及运行结果贴图如下:
3.(学习感悟)
初学时的渲染管线如图所示
输入装配阶段在我看来就可以比喻成一辆车子装满油,设好车辆参数,去往什么目的地的一个设置过程。
顶点着色器阶段就是把所输入的顶点进行一系列的处理变化,如3D中的点变成平面2D上的点
光栅化阶段通俗来说就是写入屏幕的过程,特此注意!!! 对于三角形来说,不同的顶点顺序有不同的含义。默认情况下,三角形的顶点绕顺时针排布时(从摄像机朝着该三角形看)则说明当前三角形的面朝向当前摄像机,而三角形的顶点绕逆时针排布则说明当前三角形的面背对当前摄像机。对于背朝摄像机的三角形会被剔除,从而不进行光栅化。这种做法叫背面消隐。
像素着色器阶段就是进行像素插值的过程,使得三角形内部被填充上颜色。
输出合并阶段就是进行一系列的测试
页面翻转
为了避免动画中出现画面闪烁的现象,最好将动画帧完整地绘制在一种称为后备缓冲区(back buffer)的离屏纹理内。这样观者就不会察觉出帧的绘制过程而只看到完整的动画帧。而前台缓冲区(front buffer)则为当前显示在屏幕上的动画帧,它的构造和前台缓冲区是一样的。通过硬件可以做到,在后备缓冲区的动画帧绘制完成后,通过指针交换的形式,将原来的后备缓冲区变为前台缓冲区,而前台缓冲区则变成下一帧待绘制的后备缓冲区。这种做法避免了内容上的拷贝,有效提升效率。这种翻转操作是在**桌面窗口管理器(DWM)**内实现的。
主要下面两种方式:
BitBlt Model(位块传输模型):将后备缓冲区的数据进行BitBlt(位块传输,即内容上的拷贝),传入到DWM与DX共享的后备缓冲区,然后进行翻转以显示其内容。使用这种模型至少需要一个后备缓冲区。事实上,这也是Win32应用程序最常使用的方式,在进行呈现后,渲染管线仍然是对同一个后备缓冲区进行输出。(支持Windows 7及更高版本)
Flip Model(翻转模型):该模型可以避免上一种方式多余的复制,后备缓冲区表面可以直接与DWM内的前台缓冲区进行翻转。但是需要创建至少两个后备缓冲区,并且在每次完成呈现后通过代码切换到另一个后备缓冲区进行渲染。该模型可以用于Win32应用程序以及UWP应用程序(需要DXGI1.2,支持Windows 8及更高版本
对一些专有名词的通俗解释:
D3D设备(ID3D11Device)通常代表一个显示适配器(即显卡),它最主要的功能是用于创建各种所需资源,最常用的资源有:资源类(ID3D11Resource, 包含纹理和缓冲区),视图类以及着色器。此外,D3D设备还能够用于检测系统环境对功能的支持情况。
D3D设备上下文(ID3D11DeviceContext)可以看做是一个渲染管线。通常我们在创建D3D设备的同时也会附赠一个立即设备上下文(Immediate Context)。一个D3D设备仅对应一个D3D立即设备上下文,并且只要我们拥有其中一方,就能通过各自的方法获取另一方(即ID3D11Device::GetImmediateContext和ID3D11DeviceContext::GetDevice)。渲染管线主要负责渲染和计算工作,它需要绑定来自与它关联的D3D设备所创建的各种资源、视图和着色器才能正常运转,除此之外,它还能够负责对资源的直接读写操作。
负责渲染和计算工作,它需要绑定来自与它关联的D3D设备所创建的各种资源、视图和着色器才能正常运转,除此之外,它还能够负责对资源的直接读写操作。
DX11六边形绘制的两种方法以及xjun博客的学习感悟相关推荐
- python爬虫:两种方法模拟登录博客园
第一方法用第三方库(requests):参考http://www.mamicode.com/info-detail-1839685.html 源代码分析 博客园的登录页面非常简单,查看网页源代码,可以 ...
- python爬虫如何模仿登录_python爬虫:两种方法模拟登录博客园
第一方法用第三方库(requests):参考http://www.mamicode.com/info-detail-1839685.html 源代码分析 博客园的登录页面非常简单,查看网页源代码,可以 ...
- 流程图怎样绘制,绘制流程图两种方法介绍
流程图也渐渐向办公软件开始转移,现在用的地方是越来越多了,在办公中一个绘制详细的流程图就可以省去很多时间以及不必要的麻烦,相信对办公软件的熟练应用也是很多在职人员不可缺少的技巧之一,下面给大家分享绘制 ...
- windows mysql 自动备份_windows mysql 自动备份的几种方法总结--岁月博客提供
因为管理几台windows网站服务器,需要定时对mysql进行备份,每次都是手动,也经常忘记,所以就尝试了各种自动备份方法,网上也有安装mysql自动备份软件,尝试过不太好用.这里总结下通过bat+定 ...
- mysql远程连接数据库的二种方法_mysql 远程连接数据库的二种方法 | 速光网络博客...
一.连接远程数据库: 1.显示密码 如:MySQL 连接远程数据库(192.168.5.116),端口"3306",用户名为"root",密码"123 ...
- mysql创建库几种方法_MySQL创建数据库的两种方法
本文为大家分享了两种mysql创建数据库的方法,供大家参考,具体内容如下 第一种方法:使用 mysqladmin 创建数据库使用普通用户,你可能需要特定的权限来创建或者删除 mysql 数据库. 所以 ...
- MySQL中删除数据的两种方法_MySQL删除数据库的两种方法
本文为大家分享了两种MySQL删除数据库的方法,供大家参考,具体内容如下 第一种方法:使用 mysqladmin 删除数据库使用普通用户登陆mysql服务器,你可能需要特定的权限来创建或者删除 MyS ...
- Wordpress开发 - 获取作者头像的两种方法
写在前面 今天又被一个头像坑搞惨了,一般我们获取作者的信息是都需要在循环判断中才可以使用的!比如获取作者名称 <?php the_author(); ?> .如果没有在 <?php ...
- ML之xgboost:绘制xgboost的二叉树graphviz的两种方法代码实现
ML之xgboost:绘制xgboost的二叉树graphviz的两种方法代码实现 目录 绘制xgboost的二叉树graphviz T1.采用to_graphviz法绘制树图 T2.采用plot_t ...
最新文章
- 如何用R进行单因素方差分析
- icmp反弹shell 简介
- 使用Java中的Try-With-Resource
- 2020地区mysql表_2020年甘肃省军队文职考试职位表下载:张掖地区招13人
- 特斯拉最安全的车_特斯拉现在是最受欢迎的租车选择
- 牛客 怕npy的牛牛(双指针)
- 5g虚拟技术旅游_5G造就文旅新时代,驴迹科技探索智慧出行创新领域
- java获得时间和linux系统时间不一致
- 中信证券:维持贝壳“买入”的投资评级
- 自动驾驶—全局定位的学习笔记
- 小知识:Windows XP优化全攻略(网吧型)
- adb-monkey-log分析
- html5海洋模板,海洋cms模板 海洋cms影视模板 海洋cms模板简洁
- 2020中北大学计算机调剂名额,2020年中北大学考研调剂信息
- error: variable '__this_module' has initializer but incomplete type错误解决
- 9、★♥★基于STM32单片机的颜色检测仪设计♥☆
- RK3588平台开发系列讲解(SATA篇)SATA驱动配置说明
- 安化云台山风景区三个景点,轻松游玩山水之间的风光
- github Action使用
- 前端转安卓开发!妈妈再也不用担心我的面试,满满干货指导
热门文章
- Android 使用RecyclerView 实现 tag 展示
- 数学专业转CS容易吗?需要做哪些准备?
- 中国式家长游戏制作人和计算机科学家,“中国式家长”被做成了游戏,网友:简直就是我爸原型...
- 2014-2019年中国K12家教辅导市场现状分析及投资前景
- input类型为 file 的相关知识点总结和使用
- 今日头条视频如何消重
- 形容计算机网络教室的成语,形容教室的词语
- 关于Markdown编辑器的使用
- 小米自研语音合成声音定制技术:让世界听见你的声音!
- python-docx 导出World写进内存中封装为response