如何将一种颜色格式的二维纹理与其他颜色格式的交换链结合起来?

How to combine a 2D texture in one color format with the swap chain in other color format?

我有一个交换链,其用途是DXGI_USAGE_RENDER_TARGET_OUTPUT。交换链的格式是 DXGI_FORMAT_R8G8B8A8_UNORM.

然后我有一个单独的 DXGI_FORMAT_YUY2 格式的 2D 纹理。有没有办法从交换链在后台缓冲区上渲染该纹理?当然,假设VGA卡可以处理YUV->RGB转换。

如有必要,我会提供更多信息!

编辑: 我计划用 8 位 YUY2 值(32 位 == 2 像素)填充 YUV 纹理。我应该使用顶点着色器还是像素着色器将其转换为浮点数?如果是,那么我会询问一些关于如何做的信息...

交换链只能是RGBA8或RGBA16。您应该知道,如果使用 RGBA16,交换链需要 RGBA8 中的 srgb 图像(伽玛 2.2)和线性图像。

这是您的交换链可以显示的唯一两种模式。有视频叠加功能可以直接显示 YUV 表面,但我不熟悉它们,它不会是您交换链的显示。在您的情况下,最简单的方法是编写一个像素或计算着色器来获取 YUV 数据并将其转换为交换链最终格式。