启用全场景抗锯齿后,渲染到纹理时会遇到一些麻烦。
这是正在变幻的图像(渲染的图像具有一些边缘)。
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/