使用 OpenGL 测量位图字体 (Windows)

发布于 2024-10-12 00:13:29 字数 277 浏览 3 评论 0原文

确定 OpenGL 中渲染的位图字体的“像素”长度的“正确”方法是什么?我使用 2D ortho 和 wglUseFontBitmaps() 函数在 Windows 中构建字体字符列表。如果我想测量生成的文本的大小(用于居中、格式化等),正确的方法是什么?

我应该使用 Win32 GDI GetTextExtent() API 函数,还是有办法确定 OpenGL 中当前的“光标”位置? glRasterPos 函数设置输出位置,并且当渲染每个字符时,输出位置会自动前进。那么我可以使用 glGetRasterPos 吗?

What is the 'correct' way to determine the 'pixel' length of bitmap fonts rendered in OpenGL? I'm using 2D ortho and the wglUseFontBitmaps() function to build font character lists in Windows. If I want to measure the size of my resultant text (for centering, formatting etc), what is the correct way to do this?

Should I be using the Win32 GDI GetTextExtent() API function, or is there a means of determining the current 'cursor' position within OpenGL? The glRasterPos functions sets the output position, and as each character is rendered, the output position automatically advances.. so is there a glGetRasterPos perhaps that I could use?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

把人绕傻吧 2024-10-19 00:13:29

OpenGL 不拥有这些字体; Windows GDI 必须提供该信息。我在对此问题的回答中展示了如何正确执行此操作。您需要使用 GetCharABCWidths() 获取每个字符的宽度,使用 GetTextMetrics() 获取高度。看一下 formattedString.GetLength() 上的 for 循环,它计算字符串宽度(以像素为单位)。然后您可以使用glRasterPos2d()将文本放在正确的位置。

OpenGL doesn't own the fonts; Windows GDI must provide the information. I showed how to do it right in my answer to this question. You need GetCharABCWidths() for the per-character widths and GetTextMetrics() for the heights. Look at my for loop over formattedString.GetLength(), which calculates the string width in pixels. Then you can use glRasterPos2d() to put the text in the right place.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文