【问题标题】:SDL_SetVideoMode Desired vs. ObtainedSDL_SetVideoMode 期望与获得
【发布时间】:2011-11-28 06:42:21
【问题描述】:

我正在用 C 语言编写将 SDL 用于图形的程序。我的程序针对以每像素 32 位模式编写视频进行了优化。我只是沿着每条扫描线写蓝色,绿色,红色,跳过,蓝色,绿色,红色,跳过,蓝色,绿色,红色,跳过(以 32 bpp 格式跳过那些额外的字节)。这有可能失败吗? SDL 可以拒绝我 32 bpp 并给我其他东西吗?不同颜色的字节偏移会以不同的顺序结束并搞砸我的程序吗?

【问题讨论】:

  • 我有点想回答这个问题...所以我要开始赏金了。
  • 如果你得到的答案是可以接受的,你不仅要接受,还要分配赏金。否则,赏金将无法兑现。
  • 是的,我刚刚在我的收件箱中收到一封自动发送的电子邮件。感谢您的提醒,我不知道选择答案并不会自动解决这个问题。

标签: c sdl


【解决方案1】:

SDL_SetVideoMode 默认情况下可确保您获得所需的像素深度。即使像素深度不可用,它也会虚拟地模拟它(他们称之为“阴影表面”)。当然,这可以通过SDL_ANYFORMAT 标志禁用。

有关更多信息,请参阅以下 wiki

http://sdl.beuc.net/sdl.wiki/SDL_SetVideoMode

我还怀疑,如果模拟深度,可能会导致性能下降。不确定。

另外,关于您的逻辑,我不确定您为什么要进行这样的原生扫描线操作。如果您的应用程序确实需要这种控制,那么您最好编写 OpenGL 或 DirectX 特定代码并通过库调用将它们与 SDL 接口。您可以在 Google 上搜索更多关于 OpenGL 或 DirectX 与 SDL 的接口。

【讨论】:

  • 无论这是否是最好的方式,字节顺序是否总是相同的?
  • 虽然我没有这件事的证据,但我的观点是为了保持一致性,字节顺序将保持不变。鉴于它正在努力模仿它
  • 啊,我猜选择答案不会自动奖励赏金,你去吧!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-26
  • 1970-01-01
  • 2015-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多