GEMINIGHT 警告:您的浏览器不支持JavaScript将无法正常浏览!
Warning: Your browser does not support JavaScript!
注册(Register) | 登录(Login)
看随机帖

主站(Home) »  论坛(Forum)  » 程序编写(Program)
GEMINIGHT

自称:发贴器2号
等级:发贴器
帖子数:4891
积分:9161
阅读权限:99
Directx10细节公布, 3D的未来世界即将来到 转载 1樓
Tags: DirectX

Tags引力关联贴
转载 \N
\N


刚拿到DirectX Dec2006 SDK,发现竟然有D3D10的文档和例子,速研究了一下,以下只是个人的读书笔记,仅作参考

\N

1.去掉了固定流水线
文档里列出了用DX10特性模拟的一些固定流水线的操作,MS那么大度把DX都开源了(^O^)。

\N

2.去掉了以前版本DX的设备能力检查(CAPS)
为DX10和Windows Vista提供的显示硬件必须满足DX10的所有硬件特性。这样对于开发者就比较可以放心的使用各种硬件特性了,很类似Console平台
的开发。

\N

3.状态对象(State Object)
"从100多个渲染状态中解脱出来吧!"
D3D10对渲染状态这个概念进行淡化,一方面使用全Shader化的架构使得状态的前后设置和互相影响对渲染成功率降低到最少
另外对API架构也更为简洁,另一方面对一些关键渲染状态进行封装和分类。主要分类有:

\N

Input Layout Object 输入层对象
这个东西很类似D3D9里的顶点声明,也就是对用户输入数据进行整合和系统化

\N

Rasterizer Object 光栅化对象
这部分主要控制光栅器的行为:填充模式(FILL_MODE),剔除模式(CULL_MODE),多采样,DepthBias等等

\N

DepthStencil Object 深度缓冲对象
主要控制深度缓冲的行为,像Z-buffer Enable之类的

\N

Blend Object 混合对象
设置像素混合的方法,类似AlphaBlend SrcAlpha ,DestAlpha等等

\N

Sampler Object 采样器对象
设置纹理采样状态,包括过滤器和MipMap

\N

4.新的资源访问模式和资源视图(View)概念
如果对比D3D9的Shader使用代码和D3D10的类似代码会发现一个不同。
D3D9 Shader需要对纹理进行操作时,需要将纹理设置到Shader就可以了,而D3D10里没有那么简单,设置前必须将
各种资源整合后为资源创建一个视图,再提交给Shader访问。这种操作在环境贴图里是很有好处的。对于CubeMap的6张纹理
就可以采用一个视图设置到设备,而自己要访问每张贴图只要轻松访问视图就可以了,也就是说把资源规整和集成化。

\N

5.新的可编程图形层(Stage)-几何Shader(Geometry Shader)
原来的VS和PS只是对逐个顶点或像素进行处理,而新的GS可以对每个顶点或像素的临近顶点设置Shader。也就是可以对批量几何进行处理
GS的用途有:
点精灵
动态粒子系统
皮毛系统
卷积阴影
单Pass渲染到球形贴图
逐多边形材质交换
逐多边形材质设置

\N

6.设备的创建要求对ViewPort进行设置
D3D9里无需对ViewPort进行设置就可以进行渲染,而且默认的RenderTarget就是后备缓冲
而在D3D10里,这个过程变得更为自主化。取出后备缓冲的格式,将RenderTarget设置为屏幕
这让人感到D3D10设计更趋向于成熟的引擎设计。

\N

7.流输出层(Stream Output State)
这个层的功能是将VS和GS处理完成的数据输出给用户,由用户进行处理后再反馈给流水线继续处理

\N

8.多边形拓扑结构从绘制代码分离
现在可以单独设置拓扑结构
g_pd3dDevice->IASetPrimitiveTopology( D3D10_PRIMITIVE_TOPOLOGY_TRIANGLELIST );
和使用Draw函数绘制了,很类似OpenGL

\N


9.严格的设备对象创建时间验证
这里的设备对象就是从设备创建出来的资源。为了减少CPU占用,D3D10重新设计了硬件资源调用调度,所有的设备对象都用面向对象的方法被设备
管理。这种设计方法避免了在渲染期的资源创建操作。

\N

10.去掉BeginScene和EndScene
这个对于图形API确实多余

\N


Dec2006 sdk里提供的文档让人很快想到这只是一个过渡版本
在DXUT的Mesh.Create函数中可以看到一个很有趣的现象:
创建D3D9对象,使用D3DX9里的载入X模型文件的函数载入X文件
将D3D9的模型数据转成D3D10的类型。这样做无非是在告诉我们一个
这样的信息,D3D10很有可能提供一种新的模型格式来作为研究使用
。Vista的图形系统Avalon从一些视频上分析,使用了大量的XML,所以
新的模型格式很有可能使用XML,并且X格式的解析接口确实不方便。而
XML的分析器可以由第三方提供。使得更多的研究人员能更方便的使用
这种新格式。

\N

顺便提供一些缩写对应的含义,这些在一些函数前缀会出现
IA-Input Assembler State
SO-Stream Output State
OM-Output Merger State
VS-Vertex Shader
PS-Pixel Shader
GS-Geometry Shader

发表于:2006-3-8 08:26(约18年前)  访问量:785
chengen
注册于:2005年7月28日
等级:高级会员
帖子数:97
积分:1124
阅读权限:40
2樓

顶一下,

\N

俺不做游戏很多月了!

SIGNATURE
Using codes to create beauty, that is my pride.
发表于:2006-3-11 08:57(约18年前)

标题(Title):
关键字标签(Tags):
路人:回贴可以不必登录