@olkhovich

Почему после создания двух окон в SDL2 картинка отображается только в одном?

По примеру из хабра создал окно и вывел в нем картинку bmp . Все работает. По аналогии создал второе окно и попытался уже в двух окнах вывести две разные картинки. Два окна создаются, но картинка отображается только в одном. В чем может быть проблема?
#include <iostream>

#include <SDL2/SDL.h>

const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;

SDL_Window *win = NULL;
SDL_Surface *scr = NULL;
SDL_Surface *smile = NULL;
SDL_Window *win2 = NULL;
SDL_Surface *scr2 = NULL;
SDL_Surface *smile2 = NULL;

int init() {
    if (SDL_Init(SDL_INIT_VIDEO) != 0) {
        return 1;
    }
    
    win = SDL_CreateWindow("lab1_part1", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
    if (win == NULL) {
        return 1;
    }
    
    win2 = SDL_CreateWindow("lab1_part1!", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN);
    if (win2 == NULL) {
        return 1;
    }
    
    scr = SDL_GetWindowSurface(win);
    scr2 = SDL_GetWindowSurface(win);
    
    return 0;
}

int load() {
    smile = SDL_LoadBMP("/Users/semenolhovic/Xcode/sdl2_test/hello_world.bmp");
    smile2 = SDL_LoadBMP("/Users/semenolhovic/Xcode/sdl2_test/hello.bmp");
    if (smile == NULL) {
        return 1;
    }
    if (smile2 == NULL) {
        return 1;
    }
    return 0;
}

void quit() {
    SDL_FreeSurface(smile);
    SDL_FreeSurface(smile2);
    smile = NULL;
    smile2 = NULL;
    
    SDL_DestroyWindow(win);
    SDL_DestroyWindow(win2);
    
    SDL_Quit();
}

int main (int argc, char ** args) {
    if (init() == 1) {
        return 1;
    }
    
    if (load() == 1) {
        return 1;
    }
    
    SDL_BlitSurface(smile, NULL, scr, NULL);
    SDL_BlitSurface(smile2, NULL, scr2, NULL);
    
    SDL_UpdateWindowSurface(win);
    SDL_UpdateWindowSurface(win2);
    
    SDL_Delay(2000);
    SDL_Event windowEvent;
    
    while ( true )
    {
        if ( SDL_PollEvent( &windowEvent ) )
        {
            if ( SDL_QUIT == windowEvent.type )
            {
                break;
            }
        }
    }
    
    quit();
    return 0;
}

IDE Xcode
  • Вопрос задан
  • 112 просмотров
Решения вопроса 1
fzfx
@fzfx
18,5 дм
в невнимательности:
scr = SDL_GetWindowSurface(win);
scr2 = SDL_GetWindowSurface(win);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы