回答
直接矢量字體在D3D中無法正常工作,因爲它需要一箇中間紋理來保存柵格化數據(垂直或像素)並需要做更多的額外工作,因此您需要一種方法讓它們有點不同讓他們輕鬆高效地工作(如果您的表現受到限制/關心表現)。你應該使用帶符號的距離字段來表示它(它們可以很好地擴展,但是如果你的字體很複雜,可能會縮小比例,硬邊也不能很好地存儲,但是這可以通過使用兩個通道來存儲數據,距離場也允許簡單的平滑,粗體,輪廓,發光和陰影),阿爾拉閥門的改進的阿爾法測試先進的矢量紋理渲染(如果你真的想這樣做的話,這意味着矢量字體的紙張)。它非常依賴着色器(儘管它可以通過alpha測試在FFP中完成,但在像素着色器中使用smoothstep提供了更好的結果,且開銷最小),但除了ps v1之外,其他任何東西都不需要任何東西。請參閱文件http://www.valvesoftware.com/publications.html,參見閥源sdk中的着色器以獲取完整的實現參考。 (我原意使用這個構建了一個基於Dx11的文本渲染器,奇妙地工作,雖然我使用了一個工具來強制我的sdf,所以我不需要在運行時創建它們)。
+1爲距離字體的鏈接(認真的人,_使用這個stuff_),但-1在說D3D不能使用矢量字體。矢量字體意味着使用三角形繪製字體,而不是柵格化它們。你必須做的是爲每個字形生成一個網格,而不是修改字形。這不是一個簡單的過程,但它確實可行。 –
@nicol:似乎你抓到我時,我還在修理它並充實它。更新爲在D3D中使用矢量字體更清楚一點。 – Necrolis
- 1. Direct3D渲染錯誤紋理
- 2. 使用direct3D渲染視頻
- 3. Direct3D矢量輸出?
- 4. Android Studio中的矢量渲染不良
- 5. 渲染<canvas>文本中arbitarily形矢量容器
- 6. OpenGL L系統渲染
- 7. 在OpenGL中渲染矢量圖形?
- 8. 渲染android系統中的WebView
- 9. 什麼系統組件負責在android中渲染文本?
- 10. Direct2D與Direct3D的數字視頻渲染
- 11. 在CAVE系統中分佈式渲染
- 12. 將視頻渲染到Direct3D 9.0c紋理
- 13. Direct3D 11初始化和渲染部分
- 14. Direct3D或XNA渲染自定義檯球
- 15. Qt:QOpenGLWidget中的文本渲染
- 16. chrome中的文本渲染
- 17. Ajax升級系統渲染錯誤
- 18. Rails Ajax渲染部分(投票系統)
- 19. 更改系統中所有窗口文本框的渲染機制
- 20. 在LWJGL中渲染文本
- 21. 在AS3中渲染文本
- 22. 在渲染前測量文本長度
- 23. 在Windows應用商店中渲染Direct3D中的XAML
- 24. 運行系統中的精靈渲染器中的Unity Change sprite
- 25. Rspec的渲染文本
- 26. 優化的粒子系統Direct3D 9
- 27. Unity3d,多個渲染目標 - Direct3D/OpenGl中的不同行爲
- 28. 統一腳本:渲染精靈組件
- 29. XNA中的窗口系統渲染策略(RenderTarget性能)
- 30. 將系統輸出轉換成矢量
也許您在尋找DirectWrite? http://msdn.microsoft.com/en-us/library/dd371554%28v=vs.85%29.aspx – RocketR
不幸的是,我不得不爲此任務使用direct3d。 – thirsty93
我真的只是想找一種方法在directx中使用乾淨的高質量可縮放字體。它們可能相當密集cpu,因爲我不會渲染任何其他東西。但我需要能夠用文本填充屏幕。 – thirsty93