SDL/OpenGL 结果不一致?

Posted

技术标签:

【中文标题】SDL/OpenGL 结果不一致?【英文标题】:Inconsistent SDL/OpenGL results? 【发布时间】:2010-01-24 19:49:27 【问题描述】:

我正在开发这个小型 SDL/OpenGL 游戏。它运行良好,但只能在一台计算机上运行。如果我编译它并在我的桌面上运行它,它只会弹出一个空白屏幕。如果我在上网本上运行它,它工作得很好,我可以看到我要渲染的内容。我的问题是:什么可能导致这些不一致的渲染结果?为什么一个程序运行完美,而另一个程序运行不佳?

【问题讨论】:

不同的显卡,不同的驱动。您的解决方案可能是特定于硬件的。欢迎使用 OpenGL。 发布两者的硬件规格,以及您的代码所做的一些事情(着色器、扩展等),我们或许能够查明它。 【参考方案1】:

我认为,当您使用SDL_Init 初始化 SDL 并通过 API 请求其他资源时,您实际上是在检查您的请求是否成功?如果没有,并且您无论如何都继续耕作,那么这可以解释为什么您会得到一个空白屏幕。

【讨论】:

【参考方案2】:

根据您使用的系统,如果您提出请求,SDL 可能会或可能不会返回硬件界面,您可能需要也可能不需要调用 SDL_Flip(screen) 来交换视频缓冲区。在 Mac OS X 上尤其如此,其中窗口应用程序只能使用软件表面。如果您想在 OpenGL 中使用 SDL 启用双缓冲,请调用 SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1) 而不是在 SDL_SetVideoMode() 的标志中传递 SDL_DOUBLEBUF

【讨论】:

【参考方案3】:

感谢所有回复,但事实证明这是硬件/窗口管理器怪异的某种组合。我添加了更多配置客户端的功能,并使其在窗口中运行,现在至少我得到了一些东西。如果你想看代码,感觉浏览一下here.

【讨论】:

以上是关于SDL/OpenGL 结果不一致?的主要内容,如果未能解决你的问题,请参考以下文章

垂直同步开启时,SDL+OpenGL 动画不连贯

DES加密解密结果为何不一致?

用计划任务运行bat脚本结果和手动运行脚本不一致,脚本内容只有一条move

double类型打印结果一致但系统判定不一致的问题

经过多次执行后,CUDA程序的结果不一致

与 Sqoop 不一致的结果