如何将一种颜色格式的2D纹理与其他颜色格式的交换链组合?

时间:2017-03-30 10:25:54

标签: directx-11

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

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

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

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

1 个答案:

答案 0 :(得分:0)

交换链只能是RGBA8或RGBA16。你应该知道交换链期望RGBA8中的srgb图像(gamma 2.2)和线性图像(如果是usige RGBA16)。

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