2011-05-01 140 views
1

我只是想在DirectX9中启用抗锯齿功能,但看起来并没有多大作用,并且使用ID3DXFont.DrawText(...)绘制的文本也显得锯齿状。DirectX:抗锯齿功能不起作用

这里是初始化部分

pDirect3D = Direct3DCreate9(D3D_SDK_VERSION); 
memset(&presentParameters, 0, sizeof(_D3DPRESENT_PARAMETERS_)); 
presentParameters.BackBufferCount = 1; 
presentParameters.BackBufferWidth = 800; 
presentParameters.BackBufferHeight = 500; 

presentParameters.MultiSampleType = D3DMULTISAMPLE_NONMASKABLE; 
presentParameters.MultiSampleQuality = 2; 

presentParameters.SwapEffect = D3DSWAPEFFECT_DISCARD; 
presentParameters.hDeviceWindow = hWnd; 
presentParameters.Flags = 0; 
presentParameters.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT; 
presentParameters.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT; 
presentParameters.BackBufferFormat = D3DFMT_R5G6B5; 
presentParameters.EnableAutoDepthStencil = TRUE; 
presentParameters.AutoDepthStencilFormat = D3DFMT_D16; 
presentParameters.Windowed = TRUE; 
pDirect3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,D3DCREATE_SOFTWARE_VERTEXPROCESSING, &presentParameters, &pDevice); 
pDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE); 

pDevice->SetRenderState(D3DRS_MULTISAMPLEANTIALIAS, TRUE); 

有什么我做错了什么?

ShowWindow(hWnd, nCmdShow); 
UpdateWindow(hWnd); 

回答

1

首先,文本不是由辑阵采样抗混叠,其次为2的MultiSampleQuality是几乎没有明显的。尝试4或8确保结果达到,尝试切换并观看锯齿状边缘。

您应该检出DirectX SDK中提供的AntiAlias示例,以获取有关正确设置的详细信息。

1

我正在创建带网格的文本(D3DXCreateTextW),并且即使在低质量级别时,我发现MultiSampling时有显着差异。使用任何类型的多重采样,文本和其他线条都是平滑的,而没有多重采样时它们是锯齿状的。

使用CheckDeviceMultiSampleType确认您的视频卡确实接受您请求的类型和级别。