Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 141

SDL3_image - не отрисовывается текстура

23.02.2025, 17:23. Показов 28533. Ответов 166
Метки sdl (Все метки)

Студворк — интернет-сервис помощи студентам
Не отрисовывается текстура! Путь, формат img, установки и подключения dll - проверил трижды. При наложении текстуры, просто белое поле.
Участок кода (ошибок нет):
C++
1
2
3
4
5
6
7
8
SDL_Texture* player = IMG_LoadTexture(renderer, "2.png");
if (!player) {
    SDL_Log("IMG_LoadTexture: %s\n", SDL_GetError());
}
SDL_RenderTexture(renderer, player, NULL, &rect);
SDL_DestroyTexture(player);
 
SDL_RenderPresent(renderer);
Полный код. Может кто то взглянет опытным глазом где я накосячил?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#define SDL_MAIN_USE_CALLBACKS 1
#include <SDL3/SDL.h>
#include <SDL3/SDL_main.h>
#include<SDL3_image/SDL_image.h>
#include<iostream>
 
static SDL_Window* window = NULL;
static SDL_Renderer* renderer = NULL;
SDL_FRect rect = { 0, 0, 100, 100 }; // создаем квадрат
int speed = 10;
 
SDL_AppResult SDL_AppInit(void** appstate, int argc, char* argv[])
{
    SDL_Init(SDL_INIT_VIDEO);
    SDL_CreateWindowAndRenderer("SDL3 Game", 800, 640, 0, &window, &renderer);
    return(SDL_APP_CONTINUE);
}
 
 
SDL_AppResult SDL_AppIterate(void* appstate)
{
    SDL_SetRenderDrawColor(renderer, 30, 30, 30, 255);
    SDL_RenderClear(renderer);
 
    // Получаем массив нажатых клавиш
    const bool* keys = SDL_GetKeyboardState(NULL);
    if (keys[SDL_SCANCODE_W]) {
        rect.y -= speed;
    }
    if (keys[SDL_SCANCODE_S]) {
        rect.y += speed;
    }
    if (keys[SDL_SCANCODE_A]) {
        rect.x -= speed;
    }
    if (keys[SDL_SCANCODE_D]) {
        rect.x += speed;
    }
 
    // Отрисовка квадрата и движение вправо
    SDL_SetRenderDrawColor(renderer, 30, 200, 30, 255);
    SDL_RenderFillRect(renderer, &rect);
 
    SDL_Texture* player = IMG_LoadTexture(renderer, "2.png");
    if (!player) {
        SDL_Log("IMG_LoadTexture: %s\n", SDL_GetError());
    }
    SDL_RenderTexture(renderer, player, NULL, &rect);
    SDL_DestroyTexture(player);
 
    SDL_RenderPresent(renderer);
    SDL_Delay(16);
    return SDL_APP_CONTINUE;
}
 
SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event)
{
    switch (event->type)
    {
    case SDL_EVENT_QUIT:
        return SDL_APP_SUCCESS;
        break;
 
    default:
        break;
    }
    return SDL_APP_CONTINUE;
}
 
void SDL_AppQuit(void* appstate, SDL_AppResult result)
{
    /* SDL will clean up the window/renderer for us. */
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.02.2025, 17:23
Ответы с готовыми решениями:

Использование opengl. Не отрисовывается квадрат
Начал изучать opengl и столкнулся с трудностью уже на 1 примере, согласно которому должен просто отрисовываться белый квадрат, а у меня как...

Удаление текстур OpenGL
Ребята подскажите как удалить текстуру? Через метод glDeleteTextures, если да то какие параметры она принимает? И есть ли другой способ...

SDL : Неадекватная загрузка текстур
Есть следующее приложение: Programm.h #include &lt;windows.h&gt; #include &lt;SDL.h&gt; #include &lt;iostream&gt; #include &lt;string&gt; #pragma...

166
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,966
Записей в блоге: 227
24.02.2025, 11:01
Цитата Сообщение от cosmos44 Посмотреть сообщение
Полный код. Может кто то взглянет опытным глазом где я накосячил?
Я скопировал ваш код без изменений, он работает без проблем:

Это очень странное, почему у вас не работает. У меня нет ни одной идеи. Есть одно очень слабое предположение, что с png-файлов что-то не так. Попробуйте скачать тот файл, с которым я пробовал: https://opengameart.org/content/crate-5 - там не нужно регистрироваться, чтобы скачать. Промотайте вниз, там есть ссылка для скачивания архива. Попробуйте файл clear_01.png, с которым у меня работает.

Я изменил только путь к картинке. Создал папку с именем "assets" для картинки в корне проекта. Добавил следующий код, который копирует папку "assets" в папку построения проекта (то есть в папку с EXE)

Code
1
2
3
4
# Copy the assets folder to the dist folder
add_custom_command(TARGET show-image POST_BUILD
    COMMAND ${CMAKE_COMMAND} -E copy_directory
    ${CMAKE_SOURCE_DIR}/assets $<TARGET_FILE_DIR:show-image>/assets)
Прикрепил свой проект. Вы можете открыть его через меню VS: "File" > "Open" > "CMake" и выбрать CMakeLists.txt в корне моего проекта.

Миниатюра
Вложения
Тип файла: zip show-image.zip (105.2 Кб, 2 просмотров)
1
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,966
Записей в блоге: 227
24.02.2025, 11:31
Ни в коем случае нельзя загружать текстуры в функции SDL_AppIterate(), потому что эта функция вызывается множество раз в секунду. Надо перенести загрузку текстуры в функцию SDL_AppInit(), а текстуру сделайте глобальной переменной:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SDL_Texture* player;
 
SDL_AppResult SDL_AppInit(void** appstate, int argc, char* argv[])
{
    SDL_Init(SDL_INIT_VIDEO);
    SDL_CreateWindowAndRenderer("SDL3 Game", 800, 640, 0, &window, &renderer);
    SDL_SetRenderVSync(renderer, 1);
 
    player = IMG_LoadTexture(renderer, "./assets/box.png");
    if (!player) {
        SDL_Log("IMG_LoadTexture: %s\n", SDL_GetError());
    }
 
    return(SDL_APP_CONTINUE);
}
Удаление текстуры перенесите из функции SDL_AppIterate() в функцию SDL_AppQuit(), которая вызовется один раз перед выходом из приложения:
C++
1
2
3
4
5
void SDL_AppQuit(void* appstate, SDL_AppResult result)
{
    /* SDL will clean up the window/renderer for us. */
    SDL_DestroyTexture(player);
}
Возможно в этом и есть проблема, почему у вас не рисуется текстура. Может этот косяк приводит к разному поведению на разных машинах.
1
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,966
Записей в блоге: 227
24.02.2025, 11:41
Ещё один очень важный момент, касательно этого кода:
C++
1
2
3
4
    SDL_RenderPresent(renderer);
    SDL_Delay(16);
    return SDL_APP_CONTINUE;
}
Здесь вы используете команду SDL_Delay(16), чтобы снизить нагрузку на CPU, но она всё равно завышена, например, у меня она составляет почти 12%:

Без SDL_Delay(16), конечно, будет значительно больше. У меня почти 27%:

Лучше всего убрать SDL_Delay(16) и использовать вертикальную синхронизацию, выполнив один раз при инициализации, в SDL_AppInit(), следующую команду:
C++
1
SDL_SetRenderVSync(renderer, 1);
Вызвать эту функцию надо после SDL_CreateWindowAndRenderer():
C++
1
2
3
4
5
SDL_AppResult SDL_AppInit(void** appstate, int argc, char* argv[])
{
    SDL_Init(SDL_INIT_VIDEO);
    SDL_CreateWindowAndRenderer("SDL3 Game", 800, 640, 0, &window, &renderer);
    SDL_SetRenderVSync(renderer, 1);
В этом случае, у меня нагрузка на CPU всего 0.8 %:

При этом у вас анимации будут более плавными.
Миниатюры
1
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 141
24.02.2025, 15:20  [ТС]
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Это очень странное, почему у вас не работает. У меня нет ни одной идеи
Я нашел пример наложения текстур -> результат тот же -> белое поле. Переустановил библиотеки более поздние версии и создал новый проект - результат тот же. Подключал с десяток PNG - тут что то иное....!!!!
0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,966
Записей в блоге: 227
24.02.2025, 15:25
Пробовали перенести загрузку текстуры в SDL_AppInit(), а удаление текстуры (функцию SDL_DestroyTexture()) в SDL_AppQuit()?
0
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 141
24.02.2025, 15:28  [ТС]
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Ни в коем случае нельзя загружать текстуры в функции SDL_AppIterate(), потому что эта функция вызывается множество раз в секунду. Надо перенести загрузку текстуры в функцию SDL_AppInit(), а текстуру сделайте глобальной переменной:
Я только начал изучать. Завтра попробую исправить и отпишусь по результату. Спасибо!

Добавлено через 1 минуту
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Пробовали перенести загрузку текстуры в SDL_AppInit(), а удаление текстуры (функцию SDL_DestroyTexture()) в SDL_AppQuit()?
Завтра попробую. Сегодня зашел чисто почитать рекомендации. Спасибо!!
0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,966
Записей в блоге: 227
24.02.2025, 15:29
У вас так выглядит код сейчас:
C++
1
2
3
4
SDL_RenderTexture(renderer, player, NULL, &rect);
SDL_DestroyTexture(player);
 
SDL_RenderPresent(renderer);
Вы удаляете текстуру, а потом вызываете метод SDL_RenderPresent(), который всё показывает, то есть текстура удалена и показывать нечего. Тогда странно, что у меня ваш код показывает текстуру.
0
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 141
24.02.2025, 20:27  [ТС]
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Вы удаляете текстуру, а потом вызываете метод SDL_RenderPresent(), который всё показывает, то есть текстура удалена и показывать нечего. Тогда странно, что у меня ваш код показывает текстуру.
Завтра вечером попробую поменять код. Дни насыщенные, нет времени.
Может быть у меня на данном компе железо 20-ти летней давности стоит. Драйвера-> последняя версия (10лет назад).
ладно, завтра посмотрим. Спасибо за поддержку и ответы на вопросы!
))))))))))))))))))))
0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,966
Записей в блоге: 227
25.02.2025, 21:25
Небольшое пояснение к коду. При активации этой опции:
C++
1
#define SDL_MAIN_USE_CALLBACKS 1 // Use the callbacks instead of main()
программист обязан определить четыре функции, которые вызываются автоматически:
  • SDL_AppInit() - вызывается один раз самой первой в самом начале работы приложения. Здесь можно сделать инициализацию SDL3, OpenGL, загрузку ассетов и т.д.
  • SDL_AppEvent() - вызывается, когда происходит какое либо событие, например, нажатие клавиши клавиатуры, клик мыши, касание экрана смартфона и т.д.
  • SDL_AppIterate() - вызывается для отрисовки кадра много раз в секунду, например, 60 раз в секунду, если активировать вертикальную синхронизацию, а монитор поддерживает 60 FPS
  • SDL_AppQuit() - вызывается перед завершением приложение. Здесь можно освободить выделенные ресурсы
Если одну из них не определить или определить с неверной сигнатурой, то будет выдана ошибка при компиляции. Эти функции были добавлены в новой версии SDL3 для удобства, а в SDL2, по-моему, их не было. Эти четыре функци позволяют написать один раз код, который будет собираться для работы на Desktop, Android, iOS и Web.

Добавлено через 1 час 37 минут
Было бы здорово, если вы попробовали запустить следующий пример на OpenGL и SDL3, который выводит текстуру: Изучение C++ в комплексе с OpenGL
0
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 141
26.02.2025, 17:10  [ТС]
Цитата Сообщение от 8Observer8 Посмотреть сообщение
программист обязан определить четыре функции, которые вызываются автоматически:
Последовал вашим указания (код ниже). Результат тот же - белое поле. Ошибку загрузки текстуры не выдает (if (!player) {...})

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#define SDL_MAIN_USE_CALLBACKS 1  /* use the callbacks instead of main() */
#include <SDL3/SDL.h>
#include <SDL3/SDL_main.h>
#include<SDL3_image/SDL_image.h>
#include<iostream>
 
static SDL_Window* window = NULL;
static SDL_Renderer* renderer = NULL;
SDL_FRect rect = { 0, 0, 100, 100 }; // создаем квадрат
int speed = 10;
SDL_Texture* player;
 
SDL_AppResult SDL_AppInit(void** appstate, int argc, char* argv[])
{
    SDL_Init(SDL_INIT_VIDEO);
    SDL_CreateWindowAndRenderer("SDL3 Game", 800, 640, 0, &window, &renderer);
    player = IMG_LoadTexture(renderer, "2.png");
    if (!player) {
        SDL_Log("IMG_LoadTexture: %s\n", SDL_GetError());
    }
    return(SDL_APP_CONTINUE);
}
 
 
SDL_AppResult SDL_AppIterate(void* appstate)
{
    SDL_SetRenderDrawColor(renderer, 30, 30, 30, 255);
    SDL_RenderClear(renderer);
 
    // Отрисовка квадрата
    SDL_SetRenderDrawColor(renderer, 30, 200, 30, 255);
    SDL_RenderFillRect(renderer, &rect);
 
    // Получаем массив нажатых клавиш
    const bool* keys = SDL_GetKeyboardState(NULL);
    if (keys[SDL_SCANCODE_W]) {
        rect.y -= speed;
    }
    if (keys[SDL_SCANCODE_S]) {
        rect.y += speed;
    }
    if (keys[SDL_SCANCODE_A]) {
        rect.x -= speed;
    }
    if (keys[SDL_SCANCODE_D]) {
        rect.x += speed;
    }
    
    SDL_RenderTexture(renderer, player, NULL, &rect);
    SDL_RenderPresent(renderer);
  
    SDL_Delay(16);
    return SDL_APP_CONTINUE;
}
 
SDL_AppResult SDL_AppEvent(void* appstate, SDL_Event* event)
{
    switch (event->type)
    {
    case SDL_EVENT_QUIT:
        return SDL_APP_SUCCESS;
        break;
 
    default:
        break;
    }
    return SDL_APP_CONTINUE;
}
 
void SDL_AppQuit(void* appstate, SDL_AppResult result)
{
    SDL_DestroyTexture(player);
}
0
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 141
26.02.2025, 19:25  [ТС]
Может я что то упустил или не правильно добавил?
Проект лежит не на диске с системой. Путь E:\C++\Project\SDL3_Game\файлы и папки
Привожу скрины ниже:



0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,966
Записей в блоге: 227
26.02.2025, 19:46
Цитата Сообщение от cosmos44 Посмотреть сообщение
Может быть у меня на данном компе железо 20-ти летней давности стоит. Драйвера-> последняя версия (10лет назад).
Чтобы убедиться в этом, давайте проверим, будет ли у вас работать EXE собранный у меня в релиз в статику с помощью VS 2022 и CMake:
Название: 486fa345439602597e2538263c9f1f75a99775fb.png
Просмотров: 161

Размер: 2.7 Кб
Пример должен отобразить ящик:
Название: 79a989a1aa52fe17f1aacf459b1a80ab7ccbab5e.png
Просмотров: 175

Размер: 20.9 Кб
Вложения
Тип файла: zip sdl3-image-exe.zip (1.12 Мб, 7 просмотров)
0
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 141
26.02.2025, 20:03  [ТС]
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Чтобы убедиться в этом, давайте проверим, будет ли у вас работать EXE собранный у меня в релиз в статику с помощью VS 2022 и CMake:
Я еще не знаю как собрать проект в exe
0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,966
Записей в блоге: 227
26.02.2025, 20:04
Цитата Сообщение от cosmos44 Посмотреть сообщение
Может я что то упустил или не правильно добавил?
Вроде ничего не упустили, по-моему, всё верно. Я подключаю в одном файле CMakeLists.txt Я тоже, как и вы добавил именно эти пути в PATH. Я создаю новый проект типа "CMake Project". VS сама создаёт файл CMakeLists.txt. Я в него просто дописываю три строки:
Code
1
2
3
find_package(SDL3)
find_package(SDL3_image)
target_link_libraries(show-image PRIVATE SDL3_image::SDL3_image SDL3::SDL3)
Больше ничего не надо. Открываю main.cpp и пишу код.

Попробуйте скачать архив с вашим проектом и в VS выбрать: "File" -> "Open" -> "CMake" -> в открывшемся окно выберите в моей папке файл CMakeLists.txt и нажмите Ctrl+F5 для запуска кода на выполнение.
Вложения
Тип файла: zip show-image-source.zip (105.7 Кб, 2 просмотров)
0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,966
Записей в блоге: 227
26.02.2025, 20:06
Цитата Сообщение от cosmos44 Посмотреть сообщение
Я еще не знаю как собрать проект в exe
Это я собрал ваш проект в EXE и скинул. В архиве только EXE, нужные DLL для запуска и папка assets с картинкой ящика. Вы просто скачайте архив и запустите EXE. Если на окне будет ящик, то значит ваши драйвера позволяют работать с SDL3_image.
0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,966
Записей в блоге: 227
26.02.2025, 20:15
Цитата Сообщение от cosmos44 Посмотреть сообщение
Я еще не знаю как собрать проект в exe
Кстати, раз окно показывается (хотя и без изображения), то значит, что EXE у вас создаётся. В проектах C++ всегда создаётся EXE после сборки проекта. По умолчанию на верхней панели в VS 2022 выбрана сборка в "Debug x64", поэтому EXE будет создаваться в папке "x64-debug":

А если выбрать "x64 Release":


, то будет создан релизный EXE меньшего размера, чем отладочный, потому что релизный EXE не содержит отладочной информации. Релизный EXE будет создаваться в папке "x64-release":

Миниатюры
0
8 / 6 / 4
Регистрация: 21.05.2022
Сообщений: 141
26.02.2025, 20:36  [ТС]
Цитата Сообщение от 8Observer8 Посмотреть сообщение
Попробуйте скачать архив с вашим проектом и в VS выбрать: "File" -> "Open" -> "CMake" -> в открывшемся окно выберите в моей папке файл CMakeLists.txt и нажмите Ctrl+F5 для запуска кода на выполнение.
Выл ошибку

0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,966
Записей в блоге: 227
26.02.2025, 20:58
Я нагуглил, что некоторым людям помогло обновление VS.
Кликните по колокольчику в правом нижнем углу:
Название: 1451975b567498a6bad7fdd2ba5ed585e023abc2.png
Просмотров: 159

Размер: 3.3 Кб
и выберите "Обновить VS".
0
9933 / 2936 / 494
Регистрация: 05.10.2013
Сообщений: 7,966
Записей в блоге: 227
26.02.2025, 21:46
Показывает ли этот EXE sdl3-image-exe.zip картинку?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.02.2025, 21:46
Помогаю со студенческими работами здесь

Неправильная отрисовка текстур в OpenGL
Всем доброго дня, недавно начал изучать как работать с графикой и решил повторить пример из урока, а именно - вращающийся кубик. Но...

QRubberBand медленно отрисовывается
С помощью QRubberBand выделяю участок наследника QGraphicsView для последующего сохранения, решил поставить ограничение на мышь чтобы если...

Не отрисовывается график
учусь делать оконное приложение вот по этому уроку. http://doc.qt.io/Qt-5/Qtqml-tutorials-extending-qml-example.html получилось...

Генератор текстур( с чего начать)
Всем привет, решил для своего 3д проекта написать генератор текстур, пока что необходима текстура булыжника. Никто не подскажет с помощью...

Qt с++ картинка постоянно отрисовывается
Ребята помогите пожалуйста, картинки один раз перемешивались и орисовывались и всё... а у меня эти действии повторяются каждый раз когда я...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru