c++ - 抗锯齿问题

标签 c++ directx antialiasing

启用全场景抗锯齿后,我在渲染到纹理时遇到了一些麻烦。

这是正在发生的图像(渲染图像有一些边缘)。 http://i.imgur.com/VcFNn.png

当 AA 关闭时 - 这一切都不会发生,一切正常。

为什么我会遇到这些麻烦,打开 AA 时渲染纹理的正确方法是什么?

提前致谢。

最佳答案

您应该做的第一件事是确保您的游戏能够运行全场景抗锯齿(即假设您已准备好显卡来完成这项工作)。这样做的方法是这样做:

/*
* The code below assumes that pD3D is a valid pointer 
*   to a IDirect3D9 interface.
*/

if( SUCCEEDED(pD3D->CheckDeviceMultiSampleType( D3DADAPTER_DEFAULT, 
                    D3DDEVTYPE_HAL , D3DFMT_R8G8B8, FALSE, 
                    D3DMULTISAMPLE_2_SAMPLES, NULL ) ) )
// Full-scene antialiasing is supported. Enable it here.

如果设备支持,那么您所要做的就是设置多重采样的参数:

/*
* The example below assumes that pD3D is a valid pointer 
* to a IDirect3D9 interface, d3dDevice is a pointer to a 
* IDirect3DDevice9 interface, and hWnd is a valid handle
* to a window.
*/

D3DPRESENT_PARAMETER d3dPP
ZeroMemory( &d3dPP, sizeof( d3dPP ) );
d3dPP.Windowed        = FALSE
d3dPP.SwapEffect      = D3DSWAPEFFECT_DISCARD;
d3dPP.MultiSampleType = D3DMULTISAMPLE_2_SAMPLES;
pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
                    D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                    &d3dpp, &d3dDevice)

希望这对您有所帮助!

关于c++ - 抗锯齿问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12200502/

相关文章:

C++ demo编程,混淆类实现

c# - DirectX 11 是否支持 .NET?

c# - 在全息空间中使用 XAML

opengl - 在 OpenGL 中使用 AntiAliasing 进行颜色选择?

java - LWJGL 3 中的抗锯齿

css - 字体抗锯齿问题,让我抓狂

c++ - 寻找一个 constexpr ceil 函数

c++ - 使用包含类的 typedef

c++ - std::tuple 作为成员替换,便利宏

c++ - 为什么 D3DXVec3Project 返回 D3DXVECTOR3?