2011-05-01 175 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確認您的視頻卡確實接受您請求的類型和級別。