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 结果不一致?的主要内容,如果未能解决你的问题,请参考以下文章