【转贴】谈论 Direct3D10特性预览
Direct3D10特性预览
将我在GameResBlog的老文章重新贴回来,发现写的还是很有味道,嘿嘿~~刚拿到DirectX Dec2005 SDK,发现竟然有D3D10的文档和例子,速研究了一下,以下只是个人的读书笔记,仅作参考1.去掉了固定管线
文档里列出了用DX10特性模拟的一些固定管线的操作,MS那么大度把DX都开源了(^O^)。2.去掉了以前版本DX的设备能力检查(CAPS)
为DX10和Windows Vista提供的显示硬件必须满足DX10的所有硬件特性。这样对于开发者就比较可以放心的使用各种硬件特性了,很类似Console平台
的开发。3.状态对象(State Object)
"从100多个渲染状态中解脱出来吧!"
D3D10对渲染状态这个概念进行淡化,一方面使用全Shader化的架构使得状态的前后设置和互相影响对渲染成功率降低到最少
另外对API架构也更为简洁,另一方面对一些关键渲染状态进行封装和分类。主要分类有:Input Layout Object 输入层对象
这个东西很类似D3D9里的顶点声明,也就是对用户输入数据进行整合和系统化Rasterizer Object 光栅化对象
这部分主要控制光栅器的行为:填充模式(FILL_MODE),剔除模式(CULL_MODE),多采样,DepthBias等等DepthStencil Object 深度缓冲对象
主要控制深度缓冲的行为,像Z-buffer Enable之类的Blend Object 混合对象
设置象素混合的方法,类似AlphaBlend SrcAlpha ,DestAlpha等等Sampler Object 采样器对象
设置纹理采样状态,包括过滤器和MipMap4.新的资源访问模式和资源视图(View)概念
如果对比D3D9的Shader使用代码和D3D10的类似代码会发现一个不同。
D3D9 Shader需要对纹理进行操作时,需要将纹理设置到Shader就可以了,而D3D10里没有那么简单,设置前必须将
各种资源整合后为资源创建一个视图,再提交给Shader访问。这种操作在环境贴图里是很有好处的。对于CubeMap的6张纹理
就可以采用一个视图设置到设备,而自己要访问每张贴图只要轻松访问视图就可以了,也就是说把资源规整和集成化。5.新的可编程图形层(Stage)-几何Shader(Geometry Shader)
原来的VS和PS只是对逐个顶点或象素进行处理,而新的GS可以对每个顶点或象素的临近顶点设置Shader。也就是可以对批量几何进行处理
GS的用途有:
点精灵
动态粒子系统
皮毛系统
卷积阴影
单Pass渲染到球形贴图
逐多边形材质交换
逐多边形材质设置6.设备的创建要求对ViewPort进行设置
D3D9里无需对ViewPort进行设置就可以进行渲染,而且默认的RenderTarget就是后备缓冲
而在D3D10里,这个过程变得更为自主化。取出后备缓冲的格式,将RenderTarget设置为屏幕
这让人感到D3D10设计更趋向于成熟的引擎设计。7.流输出层(Stream Output State)
这个层的功能是将VS和GS处理完成的数据输出给用户,由用户进行处理后再反馈给管线继续处理8.多边形拓扑结构从绘制代码分离
现在可以单独设置拓扑结构
g_pd3dDevice->IASetPrimitiveTopology( D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST );
和使用Draw函数绘制了,很类似OpenGL9.严格的设备对象创建时间验证
这里的设备对象就是从设备创建出来的资源。为了减少CPU占用,D3D10重新设计了硬件资源调用调度,所有的设备对象都用面向对象的方法被设备
管理。这种设计方法避免了在渲染期的资源创建操作。10.去掉BeginScene和EndScene
这个对于图形API确实多余Dec2005 sdk里提供的文档让人很快想到这只是一个过渡版本
在DXUT的Mesh.Create函数中可以看到一个很有趣的现象:
创建D3D9对象,使用D3DX9里的载入X模型文件的函数载入X文件
将D3D9的模型数据转成D3D10的类型。这样做无非是在告诉我们一个
这样的信息,D3D10很有可能提供一种新的模型格式来作为研究使用
。Vista的图形系统Avalon从一些视频上分析,使用了大量的XML,所以
新的模型格式很有可能使用XML,并且X格式的解析接口确实不方便。而
XML的分析器可以由第三方提供。使得更多的研究人员能更方便的使用
这种新格式。顺便提供一些缩写对应的含义,这些在一些函数前缀会出现
IA-Input Assembler State
SO-Stream Output State
OM-Output Merger State
VS-Vertex Shader
PS-Pixel Shader
GS-Geometry ShaderPowered by Davy.xu
msn:sunicdavy@sina.com
转载于:https://www.cnblogs.com/flying_bat/archive/2007/08/31/877259.html
【转贴】谈论 Direct3D10特性预览相关推荐
- Flink 1.14 新特性预览
简介: 一文了解 Flink 1.14 版本新特性及最新进展 本文由社区志愿者陈政羽整理,内容源自阿里巴巴技术专家宋辛童 (五藏) 在 8 月 7 日线上 Flink Meetup 分享的<Fl ...
- 【Flink】Flink Flink 1.14 新特性预览
1.概述 转载:Flink 1.14 新特性预览 简介: 一文了解 Flink 1.14 版本新特性及最新进展 本文由社区志愿者陈政羽整理,内容源自阿里巴巴技术专家宋辛童 (五藏) 在 8 月 7 日 ...
- Apache Flink Meetup 8.7 深圳站,企业实践 + 1.14 新特性预览
时隔 10 个月,Apache Flink Meetup 又来到了深圳这个与 Flink 契合度很高的城市.正如改革和创新是深圳的标签,Apache Flink 给技术开发者们带来的,也是摒弃旧的 & ...
- Silverlight 5 Beta 新特性预览
MIX11大会昨天刚刚结束.第二天核心Session包含三个部分:Windows phone 7/Silverlight 5 Beta/Kinect for Windows SDK.在整个全程直播中. ...
- 老子学不动系列:Vue 3.0 新特性预览
尤大昨天在 Vue Toronto 的主题演讲中预览了 Vue 3 .通过利用现代浏览器支持的新功能,Vue 3 将成为我们已经了解和喜爱的Vue.js 的改进版本. 我们期待的 Vue 3 将会是: ...
- php7 str split,PHP7.4新特性预览
虽然PHP 7.4还未发布,但是RFC已经确定了该版本的一些新性.这个版本的改动有点多,有很多实用性功能.发布日期可能在2019年12月左右,但尚待确认.让我们看看有那些地方的改动. 短闭包 RFC ...
- python新特性_Python3.6正式版新特性预览
按照Python官网上的计划,Python3.6正式版期望在2016-12-16号发布,也就是这周五.从去年的5月份开始,Python3.6版本就已经动手开发了,期间也断断续续的发布了4个Alpha版 ...
- alluxio2.0特性-预览
项目地址 https://github.com/Alluxio/alluxio/tree/branch-2.0-preview 2.0版本-构思和设计 支持超大规模数据工作负载 Alluxio作为计算 ...
- 优麒麟 mysql_优麒麟18.10新特性预览—生物识别
随着优麒麟18.10正式发布的日子越来越近,小编又给大家带来了一个激动人心的功能.我们知道现在越来越多的电脑都带有指纹解锁的功能,但是我们的各大linux发行版却不支持,我们广大linuxer怎么能容 ...
- Safari 最新技术预览版来啦,为开发者带来了哪些新功能?
[CSDN 编者按]2022年3月3日,苹果发布了Safari(苹果浏览器)技术预览版更新,此次更新是针对开发人员的实验版本,并且介绍了有关Safari未来版本的功能. 整理 | 郭露 出品 | CS ...
最新文章
- Linux块设备驱动程序原理
- python建db文件_临时数据库之python用sqlite3模块操作sqlite
- 【java】【乱码】Java 读取本地 UTF8 txt文件乱码处理
- C#算法设计排序篇之11-二叉树排序(附带动画演示程序)
- extjs中为什么使用“var me = this”?
- lua调用c 模块linux,Lua 调用自定义C模块
- 你最喜欢哪款游戏的界面风格,为什么?
- mysql服务启动失败原因
- C/C++[codeup 1962]单词替换
- 2021-07-27 Vue修改主页
- Python Lost connection to MySQL server during query
- 微信小程序发布正式版规则,累的教训(小程序审核常见驳回类型-可用性和完整性问题)
- MacOS安装之:此Apple ID 未用于 App Store
- IDEA Maven配置了阿里云代理还是报错
- mtk LK流程简介
- 发送邮件 空格 java_java发送邮件 - 困觉的曼巴er的个人空间 - OSCHINA - 中文开源技术交流社区...
- 运算放大器芯片输出扩流电路三例
- 苹果13磁吸充电宝哪个牌子好?苹果13磁吸充电宝推荐
- 地理信息系统 开源_国家地理将开源带到了旷野
- lambda表达式java项目常用_一文带你彻底搞懂Lambda表达式
热门文章
- JAVA-Servlet操纵方法
- 解决:PHP Deprecated: Comments starting with '#' are deprecated in ……
- python threading编程中的LOCK和RLOCK(可重入锁)
- 创建模式--辛格尔顿
- 转载]2LIS_03_BX数据源和CUBE之间不能垫DSO的原因
- three20 如何将three20中的demo添加到自己的应用程序中。
- 如何删除档案中的重复的行
- 使用Mave构建多模块项目
- 为什么 MySQL 不推荐使用 join?
- 极宝贵的BAT后端面经(含答案)