无法在嵌入式设备上为SDL屏幕设置视频模式

jak*_*gut 6 c embedded graphics arm sdl

过去几天,我一直在使用内置屏幕的基于ARM的设备(Freescale i.MX27 ADS)进行攻击.该设备运行的是经过修改的最小GNU/Linux系统,没有窗口管理或图形服务器.默认情况下,设备只应运行随附的一个应用程序.

我之前从未做过任何图形编程,所以这对我来说是一次学习经历.我尝试编写一个简单的SDL程序在设备上运行,该程序将读取位图,并在嵌入式设备的屏幕上显示图像.

我遇到的问题是无论我尝试什么分辨率,深度或标志,视频模式总是无法应用,我什么也得不到.

我知道我的代码不是问题,但无论如何我都要发布它.

#include "SDL/SDL.h"

#define SCREEN_WIDTH 640
#define SCREEN_HEIGHT 480
#define SCREEN_DEPTH 24

int main(int argc, char *argv[])
{
    SDL_Surface *screen;

    if(!SDL_Init(SDL_INIT_VIDEO))
    {
            printf("Unable to initialize SDL.\n");
            return 1;
    }

    // It always fails right here
    screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_DEPTH, SDL_SWSURFACE);
    if(screen == NULL)
    {
            printf("Unable to set video mode.\n");
            return 1;
    }

    SDL_Surface* image;
    SDL_Surface* temp;

    temp = SDL_LoadBMP("hello.bmp");
    if(temp == NULL)
    {
            printf("Unable to load bitmap.\n");
            return 1;
    }

    image = SDL_DisplayFormat(temp);
    SDL_FreeSurface(temp);

    SDL_Rect src, dest;

    src.x = 0;
    src.y = 0;
    src.w = image->w;
    src.h = image->h;

    dest.x = 100;
    dest.y = 100;
    dest.w = image->w;
    dest.h = image->h;

    SDL_BlitSurface(image, &src, screen, &dest);

    printf("Program finished.\n\n");

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

据我所知,应该在这个设备上运行的应用程序使用Qtopia.同样,我是图形编程的新手,所以我不知道如何在这样的嵌入式环境中控制图形输出.

有任何想法吗?

jak*_*gut 3

我的代码隐藏了这样一个事实:问题在于初始化 SDL,而不是设置视频模式。SDL 没有初始化,因为我的嵌入式系统没有 X 服务器,也没有鼠标。设置SDL_NOMOUSE后,问题解决。