如何有效,正确地调整ID3DXFONT大小
How to efficiently and correctly resize ID3DXFont
我希望将DirectX字体对象大小尺寸在for循环中。请参阅下面的示例:
for ( int i = 1; i < 20; i++ ) {
// font size should be i
}
为每个可能的尺寸创建字体效率低下,所以我想知道我是否可以创建某种包装器或我自己的字体渲染器,使我能够以良好的性能进行操作?
如果我没有太多意义,请查看下面的另一个示例:
// DirectX9
// calling D3DXCreateFont every loop would be incredibly inefficient.
ID3DXFont *example_font;
D3DXCreateFont( device, 14 /* font size - we want this to change */, ..., &example_font );
我该如何实现?我尝试使用比例/旋转/变换来简单地更改大小,但字体变得模糊,因此我正在寻找一个更"正确"的解决方案。
谢谢。
您遇到的问题是'栅格位图'字体的基本限制,而不是像trueType这样的'vector'字体。D3DXFONT是一种"栅格位图"解决方案,可在特定尺寸的情况下捕获TrueType字体中的位图。可以将其缩放/旋转,但仍然可以固定,但是如果您经常更改大小,则会获得工件。
但是,这只是非常快的,因为它只是绘制纹理。您还可以以几种不同尺寸捕获字体,并根据分辨率选择一个字体。
d3dxfont是d3dx9的一部分,这意味着它被弃用。当然,direct3d 9也是遗产,因此您应该在DirectX工具套件中查看Direct3d 11和
SpriteFont/SpriteBatch
,以获取现代的"栅格位图"字体解决方案。
正确的高质量,高度可扩展的文本图的正确解决方案是使用诸如DirectWrite之类的"向量字体"图形系统。
相关文章:
- 如何正确地将分支添加到已存在的树中
- 如何正确地将带有指针的数组传递给函数
- 如何正确地推回然后遍历堆中对象的向量?
- 我是否不正确地集中了这些字符数组?
- 如何通过另一个对象中的命令正确地从一个对象返回数据
- 我怎样才能通过友谊正确地履行我的职能?
- C++:如何正确地将 deque::front() 返回的变量从函数中传递出去?
- 我应该如何正确地将packaged_task移动到 lambda?
- 如何正确地将SHA1CryptoServiceProvider转换为c ++?
- 如何正确地对 constexpr 函数进行单元测试
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- 如何正确地将boost::asio::buffers_iterator转换为InputIterator
- 如何正确地检查变量char中包含的字母
- 当试图交换可变模板类时,如何正确地重载operator=
- 如何正确地将 boost::optional<std::chrono::d uration> 作为函数参数?
- 如何在C++中正确地将我的语言字符输出到HTML文件中
- 如果我的类正确地管理了一个资源,那么拥有智能的poointer有什么意义
- 如何正确地编写这些条件,以便它们在控制台中工作
- 正确地编写一个类,并将pthread与vlc库和c++一起使用
- 如何有效,正确地调整ID3DXFONT大小