Текстура BMP с прозрачностью, не отображаемая в SDL2C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Текстура BMP с прозрачностью, не отображаемая в SDL2

Сообщение Anonymous »

Я изучаю текстуры, созданные в SDL2 на C++ в Windows 10.
Я хотел бы отобразить текстуру файла BMP (light.bmp) с прозрачностью.
Я написал этот пример кода, который должен отображать bmp-текстуру «light.bmp» с прозрачностью, но на самом деле ничего не отображает:

Код: Выделить всё

#include 

#include 
//#include 

const int WIN_WIDTH = 640;
const int WIN_HEIGHT = 480;

int main(int argc, char* argv[])
{
if (SDL_Init(SDL_INIT_EVERYTHING) != 0)
{
SDL_Log("SDL_Init failed: %s", SDL_GetError());
return 1;
}
SDL_Window* win = SDL_CreateWindow("Rendering to a texture!",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED, WIN_WIDTH, WIN_HEIGHT, 0);
SDL_Renderer* renderer = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED |       SDL_RENDERER_TARGETTEXTURE);

//Put your own bmp image here
SDL_Surface* pngSurf = SDL_LoadBMP("light.bmp");   //IMG_Load("light.png");
if (pngSurf == NULL)
{
SDL_Log("IMG_Load('light.bmp') failed: %s", SDL_GetError());
return 2;
}
SDL_Texture* pngTex = SDL_CreateTextureFromSurface(renderer, pngSurf);
SDL_FreeSurface(pngSurf);

//Make a target texture to render too
SDL_Texture* texTarget = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, WIN_WIDTH, WIN_HEIGHT);

//Now render to the texture
SDL_SetRenderTarget(renderer, texTarget);
SDL_RenderClear(renderer);
SDL_RenderCopy(renderer, pngTex, NULL, NULL);
//Detach the texture
SDL_SetRenderTarget(renderer, NULL);

SDL_RenderClear(renderer);
//SDL_RenderCopyEx(renderer, texTarget, NULL, NULL, 0, NULL, SDL_FLIP_VERTICAL);
SDL_RenderCopy(renderer, texTarget, NULL, NULL);
SDL_RenderPresent(renderer);

SDL_Delay(3000);
SDL_DestroyTexture(texTarget);
texTarget = NULL;
SDL_DestroyTexture(pngTex);
pngTex = NULL;
SDL_DestroyRenderer(renderer);
renderer = NULL;
SDL_DestroyWindow(win);
win = NULL;

SDL_Quit();

return 0;
}
Что я сделал не так?
Прикрепляю файл Light.bmp:
Light.bmp с прозрачным кружком
Я ожидаю увидеть текстуру «light.bmp» с ее прозрачностью.

Подробнее здесь: https://stackoverflow.com/questions/790 ... ed-in-sdl2
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»