2010-10-05 43 views
0

我有3-4个月的这个问题。 OpenGL代码不能像Windows那样运行。我有一个项目,我需要在Linux中运行它,使用Windows API的时间,管道......。我需要迁移代码,但它看起来不太好。例如,它们在屏幕上闪烁!它是从我的显卡在Linux上?还是有其他一些困难? 另外,我在运行Debian5的VAIO-FW13GU/H笔记本电脑上安装了ATI HD3470。有没有什么好的(我看过一些司机,但不是很好:-S)ati HD系列的驱动程序?在Linux中的Open-GL困难

+0

如果你想得到答案,你应该给一些细节。发布一些给你带来麻烦的代码。 – nico 2010-10-05 12:46:46

+1

对不起,我不确定你真的想要什么答案。你能否重新说出你的问题,这很清楚什么样的答案能够满足它? – 2010-10-05 12:48:07

+1

如果您想确定闪存是您的程序还是Linux上的GL,请运行其他GL程序。运行GL演示glxgears。有一些xscreensaver模块使用GL。也可以尝试电影播放器​​,如拥有GL驱动程序的Xine。如果其他应用程序失败,则说明系统有问题;但它工作,那么你的应用程序也可以工作。 – frayser 2010-10-05 16:19:46

回答

0

尝试创建一些简单的演示程序,使用您在代码中使用的OpenGL功能。尝试隔离哪些功能导致问题。如果它们全都按照你的预期工作,那么你的代码中可能会出现一些错误,你可能会假设某些特定于平台的行为在linux中被执行。

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

+0

感谢您的回答亲爱的李,我在Windows中运行该程序。它在窗户内似乎是正确的!为什么我的代码在Windows中运行良好,但在Linux上运行得非常糟糕!不仅坏(慢),而且还有越野车!有些形状甚至会消失2-3秒! – 2010-10-08 09:54:57

+0

@绿色代码:将Windows代码移植到Linux的常见问题是:原始数据类型可能具有不同的默认大小,例如: rand()总是返回一个适合16位的数字,但不是在Linux中。结束行,如果您使用任何文件,请确保正确处理它们。显然,Windows API不存在于Linux中。简而言之,**您在代码中的某处会依赖未定义的行为**或**特定于平台的行为**。很少有OpenGL是问题(除非你的代码依赖于某些OpenGL未定义的行为,而没有那么多);只要你正确设置OpenGL即可。 – 2010-10-08 11:20:20

+0

谢谢,我会看看如果我的代码有这些问题,如果我想安装显卡的工作驱动程序,你有什么建议? – 2010-10-08 11:53:16