SDL -Renderer und schnelle TexturkopieC++

Programme in C++. Entwicklerforum
Anonymous
 SDL -Renderer und schnelle Texturkopie

Post by Anonymous »

Ich versuche, SDL3 zu verwenden, um das Ergebnis einer Software -Renderer -Engine anzuzeigen. Der Haupt -Thread besteht aus einer einfachen SDL -Schleife, die die zuletzt gerenderte Frame -Engine abreißt.

Code: Select all

int main(int argc, char *argv[])
{
SDL_Window *win = NULL;
SDL_Renderer *renderer = NULL;
int width = 320, height = 240;
bool loopShouldStop = false;

SDL_Init(SDL_INIT_VIDEO);

win = SDL_CreateWindow("SDL window", width, height, 0);

renderer = SDL_CreateRenderer(win, NULL);

SDL_Texture* texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGB96_FLOAT, SDL_TEXTUREACCESS_STREAMING, width, height);

SoftwareRenderer engine;
// [...]

while (!loopShouldStop)
{
SDL_Event event;
while (SDL_PollEvent(&event))
{
switch (event.type)
{
case SDL_EVENT_QUIT:
loopShouldStop = true;
break;
}
}

SDL_UpdateTexture(texture, NULL, engine.getFrame().data(), width * 3 * sizeof(float));

SDL_RenderClear(texture);
SDL_RenderTexture(renderer, texture, NULL, NULL);
SDL_RenderPresent(renderer);
}

SDL_DestroyTexture(texture);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(win);

SDL_Quit();

return 0;
}
Es scheint, dass der Schuldige der SDL_UPDATETEXTURE ist, der extrem langsam ist. Ich habe versucht, den Ansatz SDL_LOCKTEXTURE und sdl_unlockTexture sowie 8 -Bit -Texturformat anstelle von Float One zu verwenden, aber es gibt keinen bemerkenswerten Unterschied in der Leistung.>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post