【发布时间】:2017-10-02 17:20:27
【问题描述】:
我一直在学习 DirectX 11,在我正在阅读的书中,它指出光栅化器输出片段。据我了解,这些片段是光栅化器(输入几何图元)的输出,实际上只是 2D 位置(您的 2D 渲染目标视图)
以下是我认为我理解的,请纠正我。
光栅化器采用几何原语(球体、立方体或盒子、环形 圆柱体、金字塔、三角形网格或多边形网格)(https://en.wikipedia.org/wiki/Geometric_primitive)。然后它将这些图元转换为映射到渲染目标视图(即 2D)的像素(或点)。这就是片段。对于每个 Fragment,它都会执行 Pixel Shader,以确定其颜色。
但是,我只是假设,因为没有简单的解释说明它是什么(我可以找到)。
所以我的问题是......
1:什么是光栅化器?什么是输入,什么是输出?
2:什么是片段,与光栅化器输出相关。
3:为什么片段是浮点 4 值(SV_Position)?如果它只是用于渲染目标视图的 2D 屏幕空间?
4:它与渲染目标输出(2D 屏幕纹理)有何关联?
5:这就是为什么我们要清除渲染目标视图(任何颜色),因为 Razterizer 和像素着色器不会在渲染目标视图的所有 X、Y 位置上执行?
谢谢!
【问题讨论】:
-
我建议你看一些关于 3D 计算机图形学的经典教科书。您缺少对所有 3D 管道如何工作的基本了解。掌握了这些背景后,您就可以了解 Direct3D API 如何准确地映射到经典 3D 管道,并让您更深入地了解硬件如何加速它。我不再编写软件纹理三角形扫描例程——而且从来没有特别擅长它们——但即使是糟糕的软件实现也会教你很多这里发生的事情。
-
这里的经典教材是Foley and vam Dam。 Hearn and Baker 很好,Watt 的书也很好。
-
@ChuckWalbourn 谢谢!您是否推荐这些旧书,或获得任何升级版?我正在寻找一些我猜在通用 Directx 书籍中不存在的答案。不幸的是,在我有“AHA”时刻之前,我需要知道某些东西起作用的原因。
-
这取决于您真正想知道自己在做什么 :) 如果您想成为一名图形开发人员,那么您应该阅读其中一本旧书以获得良好的基础,而不是而不是过分关注特定技术的 API 怪癖。当然,这完全取决于你的学习方式。如果您想要一些关于 DirectX 书籍的建议/注释,请参阅this post。
-
@ChuckWalbourn 你会按什么顺序阅读它们? (对于未来的读者,是的,我刚刚得到它们!)
标签: rendering directx-11 hlsl pixel-shader