Форум программистов, компьютерный форум CyberForum.ru

SDL - удаление загруженного изображения - C++

Восстановить пароль Регистрация
 
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
16.10.2013, 16:03     SDL - удаление загруженного изображения #1
При запуске игры в случайном месте появляется бобер.
Нужно, чтобы он исчезал и через 2 секунды появлялся в другом месте.
Проблема в том, что изображение бобра почему-то не пропадает

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void C_GameCicle::callFunctionsForScene_2() const {
        // Загрузка изображений бобра
    o_LoadImages_GameCicle.loadImagesBeaver();
 
        // Отрисовка изображений бобра
    o_DrawScene_GameCicle.drawBeaver(&o_InitSurfaces_GameCicle, &o_LoadImages_GameCicle);
        
        // События игровой сцены
    o_SceneElements_GameCicle.scene_2_events
        (&o_InitSurfaces_GameCicle, &o_LoadImages_GameCicle, &o_DrawScene_GameCicle);
    
        // Удаление изображений бобра
    o_LoadImages_GameCicle.quitImagesBeaver();
 
        // Обновление экрана
    SDL_Flip(o_InitSurfaces_GameCicle.getScreen());
 
        // Задержка 2 секунды
    SDL_Delay(1000);
}
Методы загрузки и удаления изображений:
C++
1
2
3
4
void C_LoadImages::loadImagesBeaver() {
    img_beaver       = IMG_Load("images/beaver.png");
    img_red_beaver   = IMG_Load("images/red-beaver.png");
}
C++
1
2
3
4
void C_LoadImages::quitImagesBeaver() const {
    SDL_FreeSurface(img_beaver);
    SDL_FreeSurface(img_red_beaver);
}
Миниатюры
SDL - удаление загруженного изображения  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.10.2013, 16:03     SDL - удаление загруженного изображения
Посмотрите здесь:

Документация по SDL C++
C++ Странность С++ и SDL
C++ инициализация SDL
Как вывести текст на экран, используя библиотеку SDL TTF для SDL 2? C++
C++ Установка SDL 2
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
16.10.2013, 17:36  [ТС]     SDL - удаление загруженного изображения #2
Другими словами, как в SDL отменить блиттинг?
Если загрузил изображение на главный surface, то как его удалить, чтобы оно не отображалось?
coloc
погромист
 Аватар для coloc
409 / 245 / 15
Регистрация: 27.08.2012
Сообщений: 550
Завершенные тесты: 1
16.10.2013, 18:00     SDL - удаление загруженного изображения #3
dimakozyr, а ты заливай экран вначале черным цветом. Что то вроде этого:
C++
1
SDL_FillRect(screen, &screen->clip_rect, SDL_MapRGB(screen->format, 0, 0, 0);
Или установи альфу на изображение. Это уже на всякий случай:
C++
1
SDL_SetAlpha(bober, SDL_SRCALPHA, 0);

Не по теме:

почему ты на каждой отрисовке загружаешь картинки?

dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
16.10.2013, 18:49  [ТС]     SDL - удаление загруженного изображения #4
Сейчас попробую

Цитата Сообщение от coloc Посмотреть сообщение
почему ты на каждой отрисовке загружаешь картинки?
У меня 4 сцены: экран приветствия, экран самой игры, экран паузы и экран конца игры.
Решил, что эффективней будет загружать не все сразу изображения, а загружать и удалять по мере надобности

Добавлено через 3 минуты
Цитата Сообщение от coloc Посмотреть сообщение
dimakozyr, а ты заливай экран вначале черным цветом. Что то вроде этого:
Я думал, экран по умолчанию и так черный

Цитата Сообщение от coloc Посмотреть сообщение
Или установи альфу на изображение. Это уже на всякий случай:
А что это такое и зачем это нужно? С подобным еще не сталкивался
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.10.2013, 19:58     SDL - удаление загруженного изображения #5
SDL_LockSurface, перерисовать, обновить. SDL_UnlockSurface, перерисовать, обновить.
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
16.10.2013, 20:02  [ТС]     SDL - удаление загруженного изображения #6
Цитата Сообщение от alsav22 Посмотреть сообщение
SDL_LockSurface, перерисовать, обновить. SDL_UnlockSurface, перерисовать, обновить.
Можно поподробней? С перерисовать и обновить понятно, а как реализуется SDL_LockSurface и SDL_UnlockSurface?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
16.10.2013, 20:08     SDL - удаление загруженного изображения #7
Цитата Сообщение от dimakozyr Посмотреть сообщение
а как реализуется SDL_LockSurface и SDL_UnlockSurface?
Интернет? Google?
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
17.10.2013, 00:02  [ТС]     SDL - удаление загруженного изображения #8
Добавил SDL_LockSurface, SDL_UnlockSurface, SDL_FillRect (уже убрал), но никакой разницы нет.
Не вижу смысла, зачем это надо было делать

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
struct C_InitSurfaces {
 
    inline void initScreen() const {
        screen = SDL_SetVideoMode(960, 640, 32, SDL_SWSURFACE);
        
        if(SDL_MUSTLOCK(screen))
            SDL_LockSurface(screen);
        }
 
    inline void quitScreen() const {
        SDL_UnlockSurface(screen);
        SDL_FreeSurface(screen);
    }
 
    inline SDL_Surface* getScreen() const
        { return screen; }
 
  private:
 
      mutable SDL_Surface* screen;
};
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.10.2013, 00:21     SDL - удаление загруженного изображения #9
Что вы и куда добавляете - это вам видней, а не мне. Я вам ничего не предлагал добавлять. Должна быть выполнена последовательность:
Цитата Сообщение от alsav22 Посмотреть сообщение
SDL_LockSurface (для surface, который должен исчезнуть), перерисовать, обновить. SDL_UnlockSurface(для того же surface), перерисовать, обновить.
Тогда будет работать. Вам было предложено использовать эти методы для решения задачи. Как вы это реализуете (если сможете) это уже ваше дело. У меня, кстати, этот способ очень даже хорошо работает.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
17.10.2013, 00:36     SDL - удаление загруженного изображения #10
....
Вложения
Тип файла: rar Game.rar (973.4 Кб, 10 просмотров)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2013, 01:00     SDL - удаление загруженного изображения
Еще ссылки по теме:

C++ SDL C++
SDL mouse C++
Оптимизация SDL C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
dimakozyr
 Аватар для dimakozyr
157 / 24 / 1
Регистрация: 17.08.2013
Сообщений: 461
17.10.2013, 01:00  [ТС]     SDL - удаление загруженного изображения #11
Цитата Сообщение от alsav22 Посмотреть сообщение
для surface, который должен исчезнуть
Аа, понятно, а я для основного сурфейса сделал. Ладно, завтра буду разбираться
Yandex
Объявления
17.10.2013, 01:00     SDL - удаление загруженного изображения
Ответ Создать тему
Опции темы

Текущее время: 13:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru