Всем привет!
В сабже — два раздела из DirectX9 SDK Help. Проблема: если выводит текст через ID3DXFont, он получается корявенький. Это можно было бы решить, если сдвинуть текст на (-0.5, -0.5), как написано в сабжевом разделе.
Я решил проблему, рисуя на текстуре и затем отображая текстуру со смещением, но на мой взгляд это слишком сложное решение для такой простой задачи. Схематично тестовый пример выглядел так:
IDirect3DDevice9* dd;
IDirect3DTexture9* tx;
IDirect3DSurface9* surfOld;
IDirect3DSurface9* surfTx;
D3DXCreateTexture(dd, 512, 128, 3, D3DUSAGE_RENDERTARGET, D3DFMT_UNKNOWN, D3DPOOL_DEFAULT, &tx);
tx->GetSurfaceLevel(0, &surfTx);
dd->GetRenderTarget(0, &surfOld);
dd->SetRenderTarget(0, surfTx);
dd->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xffffffff, 1.0f, 0);
dd->BeginScene();
// рисуем текст
dd->EndScene();
dd->SetRenderTarget(0, surfOld);
surfTx->Release();
surfOld->Release();
dd->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xffffffff, 1.0f, 0);
dd->BeginScene();
// создаём vertex buffer с со смещенными на -0.5 координатами и размерами 512x128,
// натягиваем текстуру, выводим.
dd->EndScene();
dd->Present(NULL, NULL, NULL, NULL);
Можно ли проще?