Где я могу найти определение «SDL_Window»

Я только начал изучать SDL2 в Linux. Я читаю самый первый учебник от LazyFoo и вижу этот код:

//The window we'll be rendering to 
SDL_Window* window = NULL;

Где я могу найти определение SDL_Window, чтобы прочитать об этом?


person Panos Georgiadis    schedule 27.08.2015    source источник


Ответы (1)


Эта структура недоступна для пользователя; SDL_video.h содержит предварительное объявление:

typedef struct SDL_Window SDL_Window;

Предварительное объявление означает, что вы можете использовать его только как тип указателя, потому что фактическое расположение данных скрыто от вас.

Фактический тип struct SDL_Window в настоящее время объявлен в src/video/SDL_sysvideo.h (в SDL Исходный код:, а не в "Библиотеках разработки" :') в качестве:

struct SDL_Window
{
    const void *magic;
    Uint32 id;
    char *title;
    SDL_Surface *icon;
    int x, y;
    int w, h;
    int min_w, min_h;
    int max_w, max_h;
    Uint32 flags;
    Uint32 last_fullscreen_flags;

    /* Stored position and size for windowed mode */
    SDL_Rect windowed;

    SDL_DisplayMode fullscreen_mode;

    float brightness;
    Uint16 *gamma;
    Uint16 *saved_gamma;        /* (just offset into gamma) */

    SDL_Surface *surface;
    SDL_bool surface_valid;

    SDL_bool is_hiding;
    SDL_bool is_destroying;

    SDL_WindowShaper *shaper;

    SDL_HitTest hit_test;
    void *hit_test_data;

    SDL_WindowUserData *data;

    void *driverdata;

    SDL_Window *prev;
    SDL_Window *next;
};

Однако, если вы не занимаетесь разработкой/отладкой SDL, эта информация практически бесполезна и, что наиболее важно, может измениться в любом будущем выпуске. Также самая интересная часть - указатель на SDL_WindowUserData - зависит от платформы и зависит от разных ОС и видеодрайверов SDL.

Вместо этого следует использовать video API SDL2.

person keltar    schedule 27.08.2015
comment
Господин keltar, позвольте вопрос: как параметры x, y связаны с пикселями экрана? С Уважением. - person George Theodosiou; 25.06.2019
comment
@GeorgeTheodosiou отвечает, что потребуется изучить конкретную используемую реализацию оконной системы (windows/x11/cocoa/android/...); общий ответ: не обращайтесь к этим полям, используйте API видео SDL2. Я бы рекомендовал задать отдельный вопрос с лучшим описанием того, что вы пытаетесь решить. - person keltar; 26.06.2019
comment
пожалуйста, примите мою большую благодарность за ваш ответ. Хотя поучительно. Это показывает мне пределы знаний о SDL. С Уважением. - person George Theodosiou; 26.06.2019