【问题标题】:Open-GL difficulties in linuxLinux中的Open-GL困难
【发布时间】:2010-10-05 12:45:01
【问题描述】:

我已经有这个问题 3-4 个月了。 OpenGL 代码在 Windows 中的运行不如应有的好。我有一个项目,我需要在 linux 中运行它,其中包含使用 Windows API 的时间、管道等。我需要迁移代码,但看起来不太好。例如,它们在屏幕上闪烁!它来自我在linux上的显卡吗?还是其他一些困难? 我还在运行 Debian5 的 VAIO-FW13GU/H 笔记本电脑上安装了 ATI HD3470。有什么好的(我见过一些驱动程序,但不是很好:-S)用于 ati hd 系列的驱动程序吗?

【问题讨论】:

  • 如果你想要一个答案,你真的应该提供一些细节。贴出一些给你带来麻烦的代码。
  • 对不起,我不确定您真正想要的答案是什么。您能否重新表述您的问题,以便清楚什么样的答案会满足它?
  • 如果要确定刷机是你的程序还是Linux上的GL,运行其他GL程序。运行 GL 演示 glxgears。有一些使用 GL 的 xscreensaver 模式。还可以尝试具有 GL 驱动程序的电影播放器​​,例如 Xine。如果其他应用程序失败,则说明您有系统问题;但如果它们有效,那么您的应用程序也可以正常工作。
  • 对不起,如果我的问题含糊不清。我只是想问一下为什么我的 opengl 代码在 windows 上运行良好,但在 linux 上却非常糟糕。我认为即使我的显卡没有安装,代码也应该运行缓慢而不是错误!!!它不应该在 2-3 秒内闪烁并挤出一些形状。

标签: linux opengl driver


【解决方案1】:

尝试创建一些简单的演示程序,使用您在代码中使用的 OpenGL 功能。尝试隔离导致问题的功能。如果所有这些都按您的预期工作,则错误可能在您的代码中,您可能会假设某些特定于平台的行为在 linux 中会变得无聊。

我在移植 Windows C++ 代码时遇到了一个错误,其中 3D 网格解析代码无法正确处理 Windows 样式的行结束,并且由于它将数字字符串传递给家庭,导致网格产生难看的颜色 - brewn string-to-int 函数(我立即用 atoi() 替换了它),当它遇到额外的行结束字符时,它会默默地被打断。

【讨论】:

  • 感谢您的回答,亲爱的 Lie,我在 Windows 中运行了该程序。它在 Windows 内似乎是正确的!为什么我的代码在 Windows 上运行良好,但在 linux 上运行非常糟糕!不仅坏(慢)而且还有车!有些形状甚至会消失 2-3 秒!
  • @Green Code:将 Windows 代码移植到 Linux 的常见问题是:原始数据类型可能具有不同的默认大小,例如rand() 总是返回一个适合 16 位的数字,但在 Linux 中则不然。行尾,如果您使用任何文件,请确保正确处理它们。显然,Linux 中不存在 Windows API。简而言之,您依赖于代码中某处的未定义行为特定于平台的行为。很少有 OpenGL 是问题(除非您的代码依赖于一些 OpenGL 未定义的行为,而这种行为并不多);只要你正确设置了 OpenGL。
  • 谢谢,我会看看我的代码是否有这些问题,如果我想为显卡安装工作驱动程序,你有什么建议?
  • @Green Code:安装OpenGL驱动更多的是系统管理问题,你可以在SuperUser中得到更好的答案。不过,您需要先进行一些诊断,看看您是否已经拥有图形加速(也称为 DRI/直接渲染基础设施)。对于初学者,请检查glxinfo | grep "direct rendering" 的输出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-15
  • 1970-01-01
  • 2021-03-30
  • 1970-01-01
  • 2014-03-06
  • 1970-01-01
相关资源
最近更新 更多