我是VC新手,最近在用VC做DX9的開發,現在問題是這樣的,采用sdk中DXUT框架,在 OnFrameRender中繪圖,繪圖顯示的是一個string型別的全域結構變數(通過函式轉換為LPCWSTR后用DrawText繪制),該變數由winsock處理并接收,大約每秒60次重繪。
現在的問題是,螢屏顯示內容是正確的,但是文字有閃爍,該如何處理?
部分代碼如下:
void CALLBACK OnFrameRender( IDirect3DDevice9* pd3dDevice, double fTime, float fElapsedTime, void* pUserContext )
{
if( g_SettingsDlg.IsActive() )
{
g_SettingsDlg.OnRender( fElapsedTime );
return;
}
HRESULT hr;
RECT rc;
D3DMATERIAL9 mtrl;
D3DXMATRIXA16 matWorld;
D3DXMATRIXA16 matView = *g_Camera.GetViewMatrix();
D3DXMATRIXA16 matProj = *g_Camera.GetProjMatrix();
D3DXMATRIXA16 matViewProj = matView * matProj;
pd3dDevice->SetTransform( D3DTS_VIEW, &matView );
pd3dDevice->SetTransform( D3DTS_PROJECTION, &matProj );
// Clear the viewport
pd3dDevice->Clear( 0L, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0x00000000, 1.0f, 0L );
// Begin the scene
if( SUCCEEDED( pd3dDevice->BeginScene() ) )
{
//主繪制程式
SetRect(&rc, 5, 5, 0, 0);
g_pFont->DrawText(NULL, ConvertCharToLPWSTR(FD.title.c_str()), -1, &rc, DT_NOCLIP,
D3DCOLOR_XRGB(255,255,255));
SetRect(&rc, 5, 25, 0, 0);
g_pFont->DrawText(NULL, ConvertCharToLPWSTR(FD.kohlsmann.c_str()), -1, &rc, DT_NOCLIP,
D3DCOLOR_XRGB(255, 255, 255));
pd3dDevice->EndScene();
}
}
uj5u.com熱心網友回復:
雙緩沖和后備緩沖uj5u.com熱心網友回復:
能告訴我在哪個階段實作以及例程嗎?uj5u.com熱心網友回復:
我查看資料說D3D9自帶了雙緩沖,開啟后還是閃爍uj5u.com熱心網友回復:
是畫在視頻上嗎?畫在視頻上、視頻更新肯定會帶來閃爍的。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/93938.html
標籤:圖形處理/算法
上一篇:mfc執行java檔案
