引用

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 采样器对象
设置纹理采样状态,包括过滤器和MipMap

4.新的资源访问模式和资源视图(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函数绘制了,很类似OpenGL

9.严格的设备对象创建时间验证
这里的设备对象就是从设备创建出来的资源。为了减少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 Shader

Powered by Davy.xu
msn:sunicdavy@sina.com

李锦俊 2006-11-18 09:14 发表评论

转载于:https://www.cnblogs.com/flying_bat/archive/2007/08/31/877259.html

【转贴】谈论 Direct3D10特性预览相关推荐

  1. Flink 1.14 新特性预览

    简介: 一文了解 Flink 1.14 版本新特性及最新进展 本文由社区志愿者陈政羽整理,内容源自阿里巴巴技术专家宋辛童 (五藏) 在 8 月 7 日线上 Flink Meetup 分享的<Fl ...

  2. 【Flink】Flink Flink 1.14 新特性预览

    1.概述 转载:Flink 1.14 新特性预览 简介: 一文了解 Flink 1.14 版本新特性及最新进展 本文由社区志愿者陈政羽整理,内容源自阿里巴巴技术专家宋辛童 (五藏) 在 8 月 7 日 ...

  3. Apache Flink Meetup 8.7 深圳站,企业实践 + 1.14 新特性预览

    时隔 10 个月,Apache Flink Meetup 又来到了深圳这个与 Flink 契合度很高的城市.正如改革和创新是深圳的标签,Apache Flink 给技术开发者们带来的,也是摒弃旧的 & ...

  4. Silverlight 5 Beta 新特性预览

    MIX11大会昨天刚刚结束.第二天核心Session包含三个部分:Windows phone 7/Silverlight 5 Beta/Kinect for Windows SDK.在整个全程直播中. ...

  5. 老子学不动系列:Vue 3.0 新特性预览

    尤大昨天在 Vue Toronto 的主题演讲中预览了 Vue 3 .通过利用现代浏览器支持的新功能,Vue 3 将成为我们已经了解和喜爱的Vue.js 的改进版本. 我们期待的 Vue 3 将会是: ...

  6. php7 str split,PHP7.4新特性预览

    虽然PHP 7.4还未发布,但是RFC已经确定了该版本的一些新性.这个版本的改动有点多,有很多实用性功能.发布日期可能在2019年12月左右,但尚待确认.让我们看看有那些地方的改动. 短闭包 RFC ...

  7. python新特性_Python3.6正式版新特性预览

    按照Python官网上的计划,Python3.6正式版期望在2016-12-16号发布,也就是这周五.从去年的5月份开始,Python3.6版本就已经动手开发了,期间也断断续续的发布了4个Alpha版 ...

  8. alluxio2.0特性-预览

    项目地址 https://github.com/Alluxio/alluxio/tree/branch-2.0-preview 2.0版本-构思和设计 支持超大规模数据工作负载 Alluxio作为计算 ...

  9. 优麒麟 mysql_优麒麟18.10新特性预览—生物识别

    随着优麒麟18.10正式发布的日子越来越近,小编又给大家带来了一个激动人心的功能.我们知道现在越来越多的电脑都带有指纹解锁的功能,但是我们的各大linux发行版却不支持,我们广大linuxer怎么能容 ...

  10. Safari 最新技术预览版来啦,为开发者带来了哪些新功能?

    [CSDN 编者按]2022年3月3日,苹果发布了Safari(苹果浏览器)技术预览版更新,此次更新是针对开发人员的实验版本,并且介绍了有关Safari未来版本的功能. 整理 | 郭露 出品 | CS ...

最新文章

  1. Linux块设备驱动程序原理
  2. python建db文件_临时数据库之python用sqlite3模块操作sqlite
  3. 【java】【乱码】Java 读取本地 UTF8 txt文件乱码处理
  4. C#算法设计排序篇之11-二叉树排序(附带动画演示程序)
  5. extjs中为什么使用“var me = this”?
  6. lua调用c 模块linux,Lua 调用自定义C模块
  7. 你最喜欢哪款游戏的界面风格,为什么?
  8. mysql服务启动失败原因
  9. C/C++[codeup 1962]单词替换
  10. 2021-07-27 Vue修改主页
  11. Python Lost connection to MySQL server during query
  12. 微信小程序发布正式版规则,累的教训(小程序审核常见驳回类型-可用性和完整性问题)
  13. MacOS安装之:此Apple ID 未用于 App Store
  14. IDEA Maven配置了阿里云代理还是报错
  15. mtk LK流程简介
  16. 发送邮件 空格 java_java发送邮件 - 困觉的曼巴er的个人空间 - OSCHINA - 中文开源技术交流社区...
  17. 运算放大器芯片输出扩流电路三例
  18. 苹果13磁吸充电宝哪个牌子好?苹果13磁吸充电宝推荐
  19. 地理信息系统 开源_国家地理将开源带到了旷野
  20. lambda表达式java项目常用_一文带你彻底搞懂Lambda表达式

热门文章

  1. JAVA-Servlet操纵方法
  2. 解决:PHP Deprecated: Comments starting with '#' are deprecated in ……
  3. python threading编程中的LOCK和RLOCK(可重入锁)
  4. 创建模式--辛格尔顿
  5. 转载]2LIS_03_BX数据源和CUBE之间不能垫DSO的原因
  6. three20 如何将three20中的demo添加到自己的应用程序中。
  7. 如何删除档案中的重复的行
  8. 使用Mave构建多模块项目
  9. 为什么 MySQL 不推荐使用 join?
  10. 极宝贵的BAT后端面经(含答案)