繁体   English   中英

GL_FEEDBACK模式在特定的Windows平台上不起作用

[英]GL_FEEDBACK mode doesn't work on specific Windows platforms

在使用内置图形卡的新型笔记本电脑上,我们遇到了一个奇怪的问题。

为了绘制真字体,我们使用wglUseFontOutlines获得字形轮廓,然后在glRenderMode(GL_FEEDBACK)绘制它们。 之后,我们解析反馈缓冲区。 这已经工作了很多年。 现在,我们遇到了带有孔的字形的问题(仅在带有内置图形卡的平台上):

wglUseFontOutlines完美运行。 如果我们只绘制返回的显示列表,那么一切都很好。 但是,用GL_FEEDBACK生成的令牌流已损坏。 调试器未显示任何异常情况,所有函数均成功返回,并且解析本身也正常工作。 确实是GL_FEEDBACK模式生成的二进制数据,这是错误的。

还有其他人遇到过这个问题吗?

在Windows上是否有其他方法可以获取真型字体的轮廓和填充?

我只是在这里感到困惑:广泛的GPU驱动程序OpenGL实现通常不支持GL_SELECT和GL_FEEDBACK渲染模式。 实际上,只有上个世纪的少数图形卡才支持这些渲染模式。 因此,使用这些模式时,您几乎总是会退回到软件实现中。

但是,鉴于现代GPU的反馈机制更加灵活,最新的驱动程序实际上可以尝试使用GPU功能来实现这些渲染模式(有点奇怪,因为这些修改已从现代OpenGL配置文件中删除)。 无论如何,这可能就是您遇到这些问题的原因。

为了绘制真型字体,我们使用wglUseFontOutlines获取字形轮廓,然后在glRenderMode(GL_FEEDBACK)中绘制它们。 之后,我们解析反馈缓冲区。

那是一台很棒的Rube-Goldberg机器。 为什么不简单地使用适当的Windows GDI函数( GetGlyphOutline )剪切中间人并直接获取字形轮廓呢? 无论如何,这就是wglUseFontOutlines在内部使用的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM