美文网首页
视频驱动测试程序

视频驱动测试程序

作者: wjundong | 来源:发表于2022-08-27 21:29 被阅读0次

测试 SDL2

#include <SDL2/SDL.h>
#include <stdio.h>

int main(int argc, char const *argv[])
{

    int num = SDL_GetNumVideoDrivers();

    printf("Video drivers: %d\n", num);
    
    const char *dri_ok = NULL;

    for (int i = 0; i < num; i++)
    {
        const char *dri = SDL_GetVideoDriver(i);
        int ok = SDL_VideoInit(dri);
        SDL_VideoQuit();

        printf("%d. %s: %s\n", i, dri, ok == 0 ? "ok" : "err");

        if(ok == 0) dri_ok = dri;
    }
    
    if(dri_ok == NULL)
    {
        printf("No Available Video Driver\n");
        return -1;
    }
    
    printf("Use video driver %s\n", dri_ok);
    SDL_VideoInit(dri_ok);
    
    if(SDL_Init(SDL_INIT_VIDEO) != 0)
    {
        printf("SDL Init Error: %s\n", SDL_GetError());
        
        return -1;
    }

    printf("SDL Init OK!\n");
    

    SDL_Window *window = SDL_CreateWindow("SDL Demo", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, SDL_WINDOW_SHOWN);
    SDL_Surface *screenSurface = SDL_GetWindowSurface(window);

    SDL_FillRect(screenSurface, NULL, SDL_MapRGB(screenSurface->format, 0x00, 0xE0, 0xFF));
    SDL_UpdateWindowSurface(window);
    SDL_Delay(2000);

    SDL_DestroyWindow(window);
    SDL_Quit();

    return 0;
}

旧版本 SDL

#include <stdio.h>
#include <stdlib.h>
#include <SDL/SDL.h>

int main()
{   
    // SDL Initialize
    int ret = SDL_Init(SDL_INIT_VIDEO);
    if(ret < 0)
    {
        printf("SDL_Init ERROR: %s\n", SDL_GetError());
        return -1;
    }

    // Screen Initialize
    SDL_Surface *screen = SDL_SetVideoMode(240, 240, 32, SDL_SWSURFACE);
    Uint32 screenColor = SDL_MapRGB(screen->format, 255, 255, 255);
    SDL_FillRect(screen, NULL, screenColor);
    SDL_Flip(screen);

    // Main Program Loop
    SDL_Event event;
    do
    {
        SDL_WaitEvent(&event);
        if(event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_z)
            break;

    } while (event.type != SDL_QUIT);

    // SDL Quit
    SDL_Quit();

    return 0;
}
  • QT
    main.cpp
#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[]) 
{
    QApplication a(argc, argv);
    
    QLabel *label = new QLabel("Hello, world!");
    label->show();
    
    return a.exec();
}

demo.pro

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = qtdemo

SOURCES += main.cpp

使用 frambuffer 的话, 需指定export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0

相关文章

网友评论

      本文标题:视频驱动测试程序

      本文链接:https://www.haomeiwen.com/subject/ehbcnrtx.html