关于directx字体显示

bigbirdwind 2014-11-25 11:29:30
当backbuffer分辨率大于窗口客户区时,字体显示的质量不好,效果如下图,有什么解决方法
...全文
186 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-11-26
  • 打赏
  • 举报
回复
引用 8 楼 u013400368 的回复:
[quote=引用 5 楼 FancyMouse 的回复:] 先缩放图片,然后再渲染字体。先字体再缩放必然效果极差。
不太明白你的意思。 我是直接渲染字体,然后因为d3d的分辨率小于窗口客户区而效果不好 [/quote] 所以很多游戏不支持全屏/窗口或全屏/窗口时帧率和效果差别很大。
bigbirdwind 2014-11-26
  • 打赏
  • 举报
回复
引用 5 楼 FancyMouse 的回复:
先缩放图片,然后再渲染字体。先字体再缩放必然效果极差。
不太明白你的意思。 我是直接渲染字体,然后因为d3d的分辨率小于窗口客户区而效果不好
赵4老师 2014-11-26
  • 打赏
  • 举报
回复
引用 5 楼 FancyMouse 的回复:
先缩放图片,然后再渲染字体。先字体再缩放必然效果极差。
不一定,试试PhotoShop缩小图片功能。
FancyMouse 2014-11-26
  • 打赏
  • 举报
回复
先缩放图片,然后再渲染字体。先字体再缩放必然效果极差。
赵4老师 2014-11-26
  • 打赏
  • 举报
回复
引用 5 楼 FancyMouse 的回复:
先缩放图片,然后再渲染字体。先字体再缩放必然效果极差。
这个应该才是最终解决方案。
赵4老师 2014-11-26
  • 打赏
  • 举报
回复
引用 12 楼 u013400368 的回复:
[quote=引用 11 楼 zhao4zhong1 的回复:] 要不先试试用 SetStretchBltMode(DC,HALFTONE); StretchBlt(...)
direct3d和GDI混用?[/quote] 这也是个问题。
bigbirdwind 2014-11-26
  • 打赏
  • 举报
回复
引用 11 楼 zhao4zhong1 的回复:
要不先试试用 SetStretchBltMode(DC,HALFTONE); StretchBlt(...)
direct3d和GDI混用?
赵4老师 2014-11-26
  • 打赏
  • 举报
回复
要不先试试用 SetStretchBltMode(DC,HALFTONE); StretchBlt(...)
bigbirdwind 2014-11-26
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
继续瞎猜:(非专业回答) desc.Quality = PROOF_QUALITY;//DEFAULT_QUALITY; desc.OutputPrecision = 从下面挑几个值换换看 fdwOutputPrecision Specifies the output precision. The output precision defines how closely the output must match the requested font's height, width, character orientation, escapement, pitch, and font type. It can be one of the following values: Value Meaning OUT_CHARACTER_PRECIS Not used. OUT_DEFAULT_PRECIS Specifies the default font mapper behavior. OUT_DEVICE_PRECIS Instructs the font mapper to choose a Device font when the system contains multiple fonts with the same name. OUT_OUTLINE_PRECIS Windows NT: This value instructs the font mapper to choose from TrueType and other outline-based fonts. OUT_RASTER_PRECIS Instructs the font mapper to choose a raster font when the system contains multiple fonts with the same name. OUT_STRING_PRECIS This value is not used by the font mapper, but it is returned when raster fonts are enumerated. OUT_STROKE_PRECIS Windows NT: This value is not used by the font mapper, but it is returned when TrueType, other outline-based fonts, and vector fonts are enumerated. Windows 95: This value is used to map vector fonts, and is returned when TrueType or vector fonts are enumerated. OUT_TT_ONLY_PRECIS Instructs the font mapper to choose from only TrueType fonts. If there are no TrueType fonts installed in the system, the font mapper returns to default behavior. OUT_TT_PRECIS Instructs the font mapper to choose a TrueType font when the system contains multiple fonts with the same name. Applications can use the OUT_DEVICE_PRECIS, OUT_RASTER_PRECIS, and OUT_TT_PRECIS values to control how the font mapper chooses a font when the operating system contains more than one font with a specified name. For example, if an operating system contains a font named Symbol in raster and TrueType form, specifying OUT_TT_PRECIS forces the font mapper to choose the TrueType version. Specifying OUT_TT_ONLY_PRECIS forces the font mapper to choose a TrueType font, even if it must substitute a TrueType font of another name.
嗯,效果更好,不过比例相差太大还是效果不好,我仔细看过一些窗口化的游戏,好像都是在完成缩放窗口后调整字体。
bigbirdwind 2014-11-26
  • 打赏
  • 举报
回复
如果要做成只有窗口化,完成拉伸窗口是不是都应该丢失再恢复设备和资源来适应窗口?这样子字体调整起来更容易
引用 9 楼 zhao4zhong1 的回复:
[quote=引用 8 楼 u013400368 的回复:] [quote=引用 5 楼 FancyMouse 的回复:] 先缩放图片,然后再渲染字体。先字体再缩放必然效果极差。
不太明白你的意思。 我是直接渲染字体,然后因为d3d的分辨率小于窗口客户区而效果不好 [/quote] 所以很多游戏不支持全屏/窗口或全屏/窗口时帧率和效果差别很大。[/quote]
bigbirdwind 2014-11-25
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
字体属性里面有没有类似高质量、平滑、反锯齿、……等类似的字眼设置一下?我瞎猜。
我用DXUT里的字体属性 desc.Height = iHeight; desc.Width = 0; desc.Weight = iWeight; desc.MipLevels = 1; desc.Italic = bItalic; desc.CharSet = DEFAULT_CHARSET; desc.OutputPrecision = OUT_DEFAULT_PRECIS; desc.Quality = DEFAULT_QUALITY; desc.PitchAndFamily = DEFAULT_PITCH | FF_DONTCARE;
赵4老师 2014-11-25
  • 打赏
  • 举报
回复
字体属性里面有没有类似高质量、平滑、反锯齿、……等类似的字眼设置一下?我瞎猜。
赵4老师 2014-11-25
  • 打赏
  • 举报
回复
继续瞎猜:(非专业回答) desc.Quality = PROOF_QUALITY;//DEFAULT_QUALITY; desc.OutputPrecision = 从下面挑几个值换换看 fdwOutputPrecision Specifies the output precision. The output precision defines how closely the output must match the requested font's height, width, character orientation, escapement, pitch, and font type. It can be one of the following values: Value Meaning OUT_CHARACTER_PRECIS Not used. OUT_DEFAULT_PRECIS Specifies the default font mapper behavior. OUT_DEVICE_PRECIS Instructs the font mapper to choose a Device font when the system contains multiple fonts with the same name. OUT_OUTLINE_PRECIS Windows NT: This value instructs the font mapper to choose from TrueType and other outline-based fonts. OUT_RASTER_PRECIS Instructs the font mapper to choose a raster font when the system contains multiple fonts with the same name. OUT_STRING_PRECIS This value is not used by the font mapper, but it is returned when raster fonts are enumerated. OUT_STROKE_PRECIS Windows NT: This value is not used by the font mapper, but it is returned when TrueType, other outline-based fonts, and vector fonts are enumerated. Windows 95: This value is used to map vector fonts, and is returned when TrueType or vector fonts are enumerated. OUT_TT_ONLY_PRECIS Instructs the font mapper to choose from only TrueType fonts. If there are no TrueType fonts installed in the system, the font mapper returns to default behavior. OUT_TT_PRECIS Instructs the font mapper to choose a TrueType font when the system contains multiple fonts with the same name. Applications can use the OUT_DEVICE_PRECIS, OUT_RASTER_PRECIS, and OUT_TT_PRECIS values to control how the font mapper chooses a font when the operating system contains more than one font with a specified name. For example, if an operating system contains a font named Symbol in raster and TrueType form, specifying OUT_TT_PRECIS forces the font mapper to choose the TrueType version. Specifying OUT_TT_ONLY_PRECIS forces the font mapper to choose a TrueType font, even if it must substitute a TrueType font of another name.
DirectX修复工具最新版:DirectX Repair V3.2 标准版! 版本号:V3.2.0.35475 DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。DirectX修复工具(DirectX Repair)的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复。程序主要针对0xc000007b问题设计,可以完美修复该问题。本程序中包含了最新版的DirectX redist(Jun2010),并且全部DX文件都有Microsoft的数字签名,安全放心。 DirectX修复工具(DirectX Repair)为了应对一般电脑用户的使用,采用了傻瓜式一键设计,只要点击主界面上的“检测并修复”按钮,程序就会自动完成校验、检测、修复以及注册的全部功能,无需用户的介入,大大降低了使用难度。 本程序适用于多个操作系统,如Windows XP(需先安装.NET 2.0,详情请参阅“致Windows XP用户.txt”文件)、Windows Vista、Windows 7、Windows 8、Windows Blue(Windows 8.1),同时兼容32位操作系统和64位操作系统。本程序会根据系统的不同,自动调整任务模式,无需用户进行设置。 本程序的V3.2版分为标准版、增强版以及在线修复版。其中的标准版以及增强版都包含完整的DirectX组件。另外,增强版中还额外包含了c Redistributable Package,因此增强版不但能解决DirectX组件的问题,而且还能解决c 组件异常产生的问题。增强版适合无法自行解决c 相关问题的用户使用。在线修复版的功能与标准版相同,只是其所需的文件将通过Internet下载,因此大大减小了程序的体积。本程序的各个版本之间,主程序完全相同,只是配套使用的数据包不同。因此,当您使用标准版数据包时,程序将进行标准修复;当您使用增强版的数据包时,程序将进行增强修复;当数据包不全或没有数据包(即只有DirectX Repair.exe程序)时,程序将进行在线修复。在线修复、离线修复可自由灵活组合,充分满足不同用户的需要。 本程序自V2.0版起采用全新的底层程序架构,使用了异步多线程编程技术,使得检测、下载、修复单独进行,互不干扰,快速如飞。新程序更改了自我校验方式,因此使用新版本的程序时不会再出现自我校验失败的错误;但并非取消自我校验,因此程序安全性与之前版本相同,并未降低。 程序有自动更新c 功能。由于绝大多数软件运行时需要c 的支持,并且c 的异常也会导致0xc000007b错误,因此程序在检测修复的同时,也会根据需要更新系统中的c 组件。V3.2版本使用了全新的c 扩展包,可以大幅提高工业软件修复成功的概率。此功能仅限于增强版。 程序有两种窗口样式。正常模式即默认样式,适合绝大多数用户使用。另有一种简约模式,此时窗口将只显示最基本的内容,修复会自动进行,修复完成10秒钟后会自动退出。该窗口样式可以使修复工作变得更加简单快速,同时方便其他软件、游戏将本程序内嵌,即可进行无需人工参与的快速修复。开启简约模式的方法是:打开程序所在目录下的“Settings.ini”文件(如果没有可以自己创建),将其中的“FormStyle”一项的值改为“Simple”并保存即可。 程序有高级筛选功能,开启该功能后用户可以自主选择要修复的文件,避免了其他不必要的修复工作。同时,也支持通过文件进行辅助筛选,只要在程序目录下建立“Filter.dat”文件,其中的每一行写一个需要修复文件的序号即可。该功能仅针对高级用户使用,并且必须在正常窗口模式下才有效(简约模式时无效)。 本程序有自动记录日志功能,可以记录每一次检测修复结果,方便在出现问题时,及时分析和查找原因,以便找到解决办法。 程序的“选项”对话框中包含了4项高级功能。点击其中的“注册系统文件夹中所有dll文件”按钮可以自动注册系统文件夹下的所有dll文件。该项功能不仅能修复DirectX的问题,还可以修复系统中很多其他由于dll未注册而产生的问题,颇为实用。点击该按钮旁边的小箭头,还可以注册任意指定文件夹下的dll文件,方便用户对绿色版、硬盘版的程序组件进行注册。点击第二个按钮可以为dll文件的右键菜单添加“注册”和“卸载”项,方便对单独的dll文件进行注册。请注意,并不是所有的dll文件都可以通过这种方式注册。点击“DirectX版本”选项卡可以自行修改系统中DirectX的版本信息。点击“DirectX加速”选项卡可以控制系统中DirectX加速的开启与关闭。 新版程序集成了用户反馈程序,可以在用户允许的前提下发送检测修

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧