[英]SDL2 window is transparent
我創建的SDL窗口有問題:我可以創建一個窗口,但是它是絕對透明的,您可以看到它(不是白屏,也沒有錯誤)。
#include <SDL.h>
#include <iostream>
int main(int argc, char *argv[])
{
SDL_Window *window = nullptr;
if (SDL_Init(SDL_INIT_VIDEO) < 0)
std::cout << "SDL Initialization Error : " << SDL_GetError() << std::endl;
else
{
window = SDL_CreateWindow("SDL", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN);
if (window == NULL)
{
std::cout << "Window creation error :" << SDL_GetError() << std::endl;
}
else
{
SDL_UpdateWindowSurface(window);
SDL_Delay(2000000);
}
}
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
如果要進行簡單渲染,則應使用SDL_Renderer API; 特別是SDL_CreateRenderer
, SDL_SetRenderDrawColor
, SDL_RenderClear
和SDL_RenderPresent
。 SDL_UpdateWindowSurface
東西主要用於移植古老的SDL 1應用程序,而不是真正用於編寫新東西。 無論如何,您實際上並沒有在窗口表面放置任何東西(肯定不是白色背景),因此它不包含任何東西也就不足為奇了。
使用SDL_Renderer的簡單示例:
SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
for(bool keep_running = true; keep_running;) {
for(SDL_Event ev; SDL_PollEvent(&ev);) {
if(ev.type == SDL_QUIT) {
keep_running = false;
}
}
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
SDL_RenderClear(renderer);
SDL_RenderPresent(renderer);
}
您可以在SDL_CreateWindow
和SDL_DestroyWindow
調用之間放置該權限-請查看SDL2 Wiki,以詳細了解這些功能的作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.