gpt4 book ai didi

c++ - DirectX 10 中多重采样的操作顺序

转载 作者:搜寻专家 更新时间:2023-10-31 00:45:27 25 4
gpt4 key购买 nike

我对 DirectX 10 中抗锯齿需要完成的过程感到困惑。我以前根本没有做过,所以可能只是我对一般过程感到困惑。

这是目前我所知道的(或者我认为我知道的):您需要为您在着色器中使用的 RasterizerState 对象启用多重采样,并且需要将交换链描述 (DXGI_SWAP_CHAIN_DESC) 中的 SampleDesc 设置为Count 的支持值(并且 Quality 应该保持为 0,因为其他值或特定于硬件的值 - 虽然我不知道为什么)。在准备更多绘图(ClearRenderTargetView 和 IASetInputLayout)的调用和对 Present 的调用之间,应将后台缓冲区下采样(通过 ResolveSubresource)到其他大小相等的纹理。然后,(这是我找不到任何东西的部分)以某种方式呈现下采样纹理。

我是不是遇到什么问题了?还是我只是在最后一步弄错了?我看到一些资源提到在最后一次绘制到具有多重采样着色器纹理 (Texture2DMS<>) 的全屏四边形期间进行采样分辨率,但无法弄清楚这会带来什么,或者为什么要这样做设备调用以这种方式解决它。

我在这方面所做的任何尝试都不会提高图像质量。

最佳答案

编辑:我正在使用 DX11,您只需使用 D3D10_ 而不是 D3D11_,谢谢 DeadMG。

您不需要进行任何下采样。<​​/p>

找出您的 GPU 支持的质量模式和样本数。你说质量等级应该是0,那是错误的。使用它来获取支持的质量模式和样本计数:

UINT GetMSAAQuality(UINT numSamples,DXGI_FORMAT format)
{
UINT q=-1;
HR(m_device->CheckMultisampleQualityLevels(format,numSamples,&q));
return q-1;
}

// Use it like this:
UINT sampleCount=4; // You set this
UINT sampleQuality=GetMSAAQuality(sampleCount,DXGI_FORMAT_CHOOSE_ONE);

// For swap chain
DXGI_SWAP_CHAIN_DESC d;
d.SampleDesc.Count=sampleCount;
d.SampleDesc.Quality=sampleQuality;

// Now for all the textures that you create for your
// render targets and also for your depth buffer
D3D11_TEXTURE2D_DESC dtex;
dtex.SampleDesc.Quality=sampleQuality;
dtex.SampleDesc.Count=sampleCount;

// Now for all your render target views you must set the correct dimension type
// based on if you use multisampling or not
D3D11_RENDER_TARGET_VIEW_DESC drtv;
dRtSwapChain.ViewDimension=sampleQuality==0?D3D11_RTV_DIMENSION_TEXTURE2D:D3D11_RTV_DIMENSION_TEXTURE2DMS;

// For depth stencil view
D3D11_DEPTH_STENCIL_VIEW_DESC ddsv;
ddsv.ViewDimension=sampleQuality==0?D3D11_DSV_DIMENSION_TEXTURE2D:D3D11_DSV_DIMENSION_TEXTURE2DMS;

如果您想在着色器中读取多重采样纹理(例如,如果您渲染全屏四边形),您必须声明纹理 Texture2DMS<>。

关于c++ - DirectX 10 中多重采样的操作顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6803947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com