Adreno GPU上的DirectX应用开发简介 (3)

Adreno GPU上的DirectX应用开发简介 (3)


sRGB 纹理和渲染目标
sRGB 是 HP 和 Microsoft 于 1996 年合作创建的标准 RGB 色彩空间,用于显示器、打印机和 Internet。 今天的智能手机和平板电脑显示器也采用 sRGB(非线性)色彩空间。 因此,为了获得最佳的观看体验
使用正确的颜色视图,渲染目标和纹理匹配与显示相同的颜色空间,即 sRGB,这一点很重要。 Adreno GPU 支持渲染目标和纹理的 sRGB 色彩空间,使这种色彩正确的观看体验成为可能。

Direct3D11 使用纹理格式和渲染目标支持 sRGB 颜色空间,格式为 DXGI_FORMAT_R8G8B8A8_UNORM_SRGB、DXGI_FORMAT_BC1_UNORM_SRGB、DXGI_FORMAT_BC2_UNORM_SRGB 和 DXGI_FORMAT_BC3_UNORM_SRGB。

几何特征

顶点格式

下表列出了可用于 Direct3D 11.1 Feature Level 9.3 中的顶点数据的格式。

Adreno GPU上的DirectX应用开发简介 (3)索引格式
索引缓冲区可以使用 DXGI_FORMAT_R16_UINT 和 DXGI_FORMAT_R32_UINT 格式存储为 16 位 USHORT 或 32 位 UINT。

高级几何支持

几何实例化

几何体实例化是一次在场景中渲染同一网格或几何体的多个副本的做法。 此技术主要用于树木、草地或建筑物等对象,这些对象可以表示为重复几何体而不会出现过度重复,尽管几何体实例化也可用于角色。 尽管顶点数据在所有实例化网格中重复,但每个实例可能会更改其他区分参数(如颜色、变换、照明等)以减少重复的出现。 例如,在图 2-3 中,场景中的所有桶都可以使用一组多次实例化的顶点数据,而不是为每个桶使用唯一的几何体。

Adreno GPU上的DirectX应用开发简介 (3)几何实例化可显着节省内存使用量。 它允许 GPU 在不同位置的单个绘制调用中多次绘制相同的几何图形,同时仅存储顶点数据的单个副本、索引数据的单个副本和包含每个实例变换的一个副本的附加流。 如果没有实例化,GPU 将不得不存储顶点和索引数据的多个副本。

可以使用 Direct3D11 功能级别 9_3 中的 ID3D11DeviceContext::DrawIndexedInstanced() 实现几何实例化。

多重采样抗锯齿 (MSAA)
抗锯齿是提高生成图像质量的重要技术。 它减少了渲染成离散像素的视觉伪影。 图形 API 渲染的几何图元被光栅化到网格上。 在此过程中,它们的边缘可能会变形,如图 2-4 的楼梯效果图像所示。 抗锯齿的最大优势之一是它可以平滑图元的边缘,并且可以为渲染提供更干净、更逼真的外观。

Adreno GPU上的DirectX应用开发简介 (3)在减少混叠效应的各种技术中,多采样是 Adreno GPU 支持的一种。 多重采样将每个像素划分为一组样本,每个样本在光栅化过程中都被视为“迷你像素”。 每个样本都有自己的颜色、深度和模板值。 并且这些值会一直保留,直到图像准备好显示为止。 当需要合成最终图像时,样本被解析为最终像素颜色,如图 2-4 所示。 Adreno GPU 支持两个或四个样本。

在 Metro 应用程序中,无法在主后台缓冲区上执行 MSAA。 相反,应用程序必须渲染到多重采样的屏幕外渲染目标,使用 ID3D11DeviceContext::ResolveSubresource() 将其解析为非多重采样的渲染目标,然后将非多重采样版本作为绑定到全屏四边形的纹理渲染到后台缓冲区。 此技术在 Adreno SDK for DirectX 中的 MSAA 示例中进行了演示。

上一篇:Windows 11 中原生支持新的视频编码的 API


下一篇:Delphi 10.4.1 游戏开发引擎unDelphiX