단순히 ID3DXFont::DrawText()
을 사용하면 들쭉날쭉 한 글꼴, 특히 큰 글꼴 크기의 글꼴이 생성됩니다. DirectX9를 사용하여 Windows 8 Metro UI 에서처럼 글꼴을 매우 부드럽게 렌더링하는 방법이 있습니까?DirectX9에서 어떻게 부드러운 부드러운 글꼴을 렌더링합니까?
Direct2D가 필요하기 때문에 DirectWrite를 피하려고 노력하고 있지만 DirectX9를 사용하고 있습니다.
단순히 ID3DXFont::DrawText()
을 사용하면 들쭉날쭉 한 글꼴, 특히 큰 글꼴 크기의 글꼴이 생성됩니다. DirectX9를 사용하여 Windows 8 Metro UI 에서처럼 글꼴을 매우 부드럽게 렌더링하는 방법이 있습니까?DirectX9에서 어떻게 부드러운 부드러운 글꼴을 렌더링합니까?
Direct2D가 필요하기 때문에 DirectWrite를 피하려고 노력하고 있지만 DirectX9를 사용하고 있습니다.
DirectWrite는 실제로 Direct2D를 요구하지 않으며 자체적으로 사용할 수 있습니다 (IDWriteBitmapRenderTarget). DirectWrite 텍스트를 IWICBitmap (ID2D1Factory :: CreateWicBitmapRenderTarget())을 통해 DirectWrite 텍스트를 렌더링하고 DX를 사용하여 그 비트 맵을 그리는 것이 훨씬 더 쉽습니다 (DX 표면에 복사하거나 일부 공유 표면 접근법을 사용하는 것). 여기에 구체적인 것은 잘 모르겠다.) IWICImagingFactory :: CreateBitmap()을 통해 IWICBitmap을 만들 수 있습니다.
Metro는 ClearType을 사용하지 않는 것으로 보이므로 회색 음영이 좋을 것입니다. 적절한 ClearType 텍스트는 실제로 구성 요소 별 알파를 필요로하므로 일반적으로이를 알파 채널이있는 비트 맵으로 렌더링하는 데는 효과가 없습니다.
XP에서 실행할 수 있도록 DX9를 사용하고 있습니까? 아니면 다른 이유로 사용하고 있습니까? Win7 또는 Vista SP2 + Platform Update가 최소한으로 필요하면 D2D + DW를 사용하여 텍스트를 비트 맵으로 렌더링 한 다음 DX를 사용하여 비트 맵을 그리는 것이 좋습니다.
"매우 간단하다"에서 "매우 복잡하다"까지 범위를 지정할 수있는 비트 맵 글꼴 렌더링을 만들 수 있습니다.
간단한 방법으로 Managed DirectX에 있지만 C++/DirectX 9에서 쉽게 수행 할 수있는이 예제가 있습니다. Bitmap Fonts. 이 무료 앱인 Bitmap Font Generator으로 비트 맵 글꼴 시트를 쉽게 만들 수도 있습니다 (여기에 비트 맵 렌더러를 만드는 방법에 대한 링크가 있습니다).
그런 다음 Improved Alpha-Tested Magnification for Vector Textures에 설명 된대로 signed distanced fields을 사용하는 것과 같이 글꼴을 사용하는 더 복잡한 방법이 있습니다.
ID3DXFont는 정말 멋지고 부드러운 글꼴을 그릴 수 없습니다. 이것을 달성하기 위해 필자 자신의 텍스쳐 아틀라스를 폰트로 렌더링 한 다음 텍스쳐가있는 쿼드로 그립니다. 두 번째 방법은 atlas에서 비슷한 방법으로 글꼴을 그리지 만 Distance 필드 메서드를 사용하는 것입니다. 간단한 픽셀 쉐이더가있는 거리 필드는 매우 부드럽고 확장 가능한 글꼴을 제공합니다. 당신은 안티 앨리어싱 또는 클리어를 찾고있는 것처럼 my distance field font
소리 :
는이 시점에서 나는 이것이 달성했다. –@ MДΓΓLLLLLL 나는'CLEARTYPE_QUALITY' 및'ANTIALIASED_QUALITY' 플래그를 시도했습니다. 그들은 여전히 들쭉날쭉 한 글꼴을 생성하고, 나는 그들을 스케일링하지 않습니다. – Joshua
@ Joshua : 스크린 샷과 렌더링 코드 조각을 제공하십시오. – SigTerm