Я изучаю текстуры, созданные в SDL2 на C++ в Windows 10.
Я хотел бы отобразить текстуру файла BMP (light.bmp) с прозрачностью.
Я написал этот пример кода, который должен отображать bmp-текстуру «light.bmp» с прозрачностью, но на самом деле ничего не отображает:
Я изучаю текстуры, созданные в SDL2 на C++ в Windows 10. Я хотел бы отобразить текстуру файла BMP (light.bmp) с прозрачностью. Я написал этот пример кода, который должен отображать bmp-текстуру «light.bmp» с прозрачностью, но на самом деле ничего не отображает: [code]#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);
return 0; } [/code] Что я сделал не так? Прикрепляю файл Light.bmp: Light.bmp с прозрачным кружком Я ожидаю увидеть текстуру «light.bmp» с ее прозрачностью.