Создание собственной WM на SDL

257
15 октября 2017, 23:39

Добрый день вопрос такой, можно ли написать на C SDL свою WM? я попытался (ниже примерный код) сделать тестовую приложуху и запустить ее в место unity на ubuntu, но пишет при xinit что ошибка в синтаксисе, что в принципе невозможно ибо на входе бинарник. Вобще, может кто направить по этой теме меня, желательно средствами SDL? Заранее спасибо

 #include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <SDL2/SDL.h>
#include <SDL/SDL_image.h>
/*
    Константы разрешения
*/
#define SCREEN_WIDTH    1920
#define SCREEN_HEIGHT   1080
/*
    Генерация интерфейса окна
*/
bool interface(SDL_Renderer *render, const Uint8 *state)
{
    if(state[SDL_SCANCODE_SPACE]) return true;
    SDL_SetRenderDrawColor(render, 255, 0, 0, 255);
    SDL_RenderDrawPoint(render, 1920, 1000);
    SDL_SetRenderDrawColor(render, 100, 0, 0, 155);
    SDL_RenderDrawPoint(render, 300, 300);
    return false;
}
/*
    Главная функция
*/
int main(int agc, char *args[])
{
    // Создаем переменные менеджера
    SDL_Window* window; const Uint8 *state;
    bool quit = false; SDL_Event event;
    SDL_Texture *texture;
    // Если невозможно инициализировать 
    if(SDL_Init(SDL_INIT_VIDEO) < 0) return 1;
    // Создаем окно
    if((window = SDL_CreateWindow("test", SDL_WINDOWPOS_UNDEFINED,
    SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_FULLSCREEN_DESKTOP)) == NULL)
    // Если возникла ошибка
    {
        printf("Error: Can't create window.\n");
        return 1;
    } // Создаем указатель на рендер
    SDL_Renderer *render = SDL_CreateRenderer(window, -1, 0);

    // Цикл генерации оболочки
    while(!quit)
    {
        // Очистка экрана
        SDL_RenderClear(render);
        // Рендер фона окна
        // Получаем текущий снимок клавиатуры
        SDL_PumpEvents(); state = SDL_GetKeyboardState(NULL);
        // Запускаем обработку входящих параметров
        quit = interface(render, state);
        // Обновляем картинку
        SDL_RenderPresent(render); SDL_Delay(1);
    } // Если был произведен выход и цикла
    SDL_DestroyRenderer(render); // Останавливаем рендер
    SDL_DestroyWindow(window); // Убираем окно
    SDL_Quit(); // Завершаем работуSDL
    // Выход
    return 0;
}
READ ALSO
Как в с++ сравнивать значения строки [требует правки]

Как в с++ сравнивать значения строки [требует правки]

Надо найти в коде все числа из 10-ной СИ (в тесте ввод только 10-ных) и заменить их на числа из 2-ной СИПри чем десятичные числа идут вперемешку...

321
C++ задачка на строки [требует правки]

C++ задачка на строки [требует правки]

Пароль называется криптостойким, если он включает в себя и строчные латинские буквы, и заглавные латинские буквы, и цифры, при этом его длина...

432
&ldquo;Трехмерный&rdquo; map в C++

“Трехмерный” map в C++

Здравствуйте! Возникла необходимость создать "трёхмерный" массив с двумя целочисленными и одним вещественным индексомЯ решил воспользоваться...

270