qt - osgEarth 和 Qt 中未显示的行
问题描述
我试图在 Windows 上的 Qt (5.12) 应用程序中使用 osgEarth,但在显示线条时遇到了一些问题 - 例如,它们根本没有出现。
按照 Stack Overflow 上构建 osg、osgQt 和 osgEarth 的一些说明,我设法构建并运行了所有内容。
如果我使用 annotation.earth 文件运行 osgearth_windows,它运行良好,我会看到一些带边框的形状,以及地球上的几条线。
如果我使用我的 osgQt 应用程序运行,我会看到形状和标签,但形状或单独的线条上没有边框。
我很好奇是否有人以前经历过这种情况,如果有一些设置我应该使用 Qt 来解决这个问题。
同样,如果我尝试一些内置的 osgEarth 示例程序,例如 osgearth_features.exe,我会看到地球和每个国家周围的黄色边框。如果我按照那里的代码(它创建地图的方式,然后加载底图,然后是 FeatureSoureLayer 等),我可以在我的 Qt 应用程序中看到地球和标签,但仍然没有线条。
同样,我在另一个 Stack Overflow 问题(如何在运行时添加 osgEarth 功能?)也有另一个问题,并尝试了将 PolygonSymbol 添加到地图的解决方案。我可以看到绿色三角形,但看不到它的边框。
任何帮助将不胜感激!
解决方案
确保你正在调用这个:
#include <osgEarth/GLUtils>
...
GLUtils::setGlobalDefaults(camera->getOrCreateStateSet());
主视图中的相机在哪里camera
,或者场景图顶部的另一个节点在哪里。
渲染线条的着色器需要初始化一些默认的统一值。这段代码就是这样做的。
推荐阅读
- azure - Jenkins 管道未部署到 azure
- xcode - 如何在 Xcode 中临时禁用通过 POD 文件添加的框架
- typescript - 如何在打字稿中声明递归类型以进行方法链接?
- python - 我如何使用 python 和 selenium 自动登录网站
- c# - 覆盖 DataColumn 的 clone()
- r - 应用 if 函数根据另一个变量的值来识别变量的值
- c# - 将控件拖到窗体上时出现 NullReferenceException
- bash - 在 Docker 容器中运行多个 ROS 进程
- c# - 替换文本后删除 HTML 电子邮件 css
- javascript - 仅返回 JSON 的特定元素