【问题标题】:SDL_SetVideoMode problemsSDL_SetVideoMode 问题
【发布时间】:2010-10-25 17:35:38
【问题描述】:

我正在使用 SDL_Image 在屏幕上显示 JPEG,但它的显示分辨率存在一些问题。

我知道,如果我在调用 SDL_SetVideoMode 时将 0 传递给宽度、高度和位,则 SDL 会采用当前模式值,但在我的情况下这些似乎是错误的。

我在带有自定义显示器(1440x900 的 LED 屏幕)的嵌入式 linux 系统上运行它,帧缓冲区为 1280x720。

JPEG 已显示,但似乎是 640x480,因此大部分屏幕都是白色的。当我使用 SDL_SetVideoMode 指定宽度和高度时,出现错误:

SDL_SetVideoMode:没有足够大的视频模式用于 1280x720

这是我正在使用的主要代码:

pImage = IMG_Load(file);
pScreen = SDL_SetVideoMode(0,0,0,SDL_ANYFORMAT);
SDL_BlitSurface(pImage,0,pScreen,0);
SDL_Flip(pScreen);

任何人有任何想法/指针?

谢谢!

【问题讨论】:

  • 您的 JPEG 文件的尺寸是多少?
  • 我试过几个,一个是 2100x1750 的大尺寸,一个是 1440x900 和一个 1280x720。使用上述方法,每个都只是缩放到屏幕的一小部分
  • 另外,有时当我调用 SDL_SetVideoMode 时,它​​会挂起程序,当我按下 ctrl-c 时,它会再次唤醒并继续显示图像。相关吗?

标签: c++ linux embedded sdl


【解决方案1】:

通过将自定义分辨率添加到 /etc/fb.modes 来解决此问题,如下所示:

mode "1280x720-59"
    # D: 172.00 MHz, H: 82.700 kHz, V: 66.00 Hz
    geometry 1280 720 1280 720 16
    timings 13000 300 70 26 3 80 5
endmode

我上面评论中提到的 SDL_SetVideoMode 挂起仍然没有修复...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多