SDL многоуровневая система рендеринга - PullRequest
0 голосов
/ 01 июля 2018

Мне нужна помощь в построении многоуровневой системы рендеринга в SDL2.

У меня есть первый слой, содержащий карту Парижа с его дорогами. Мне нужно нарисовать линию между двумя точками на этой карте - проблема возникает, когда прежнее состояние этой линии не исчезает.

Мне нужно нарисовать эту линию на карте и сохранить это.

Как мне сделать систему для сохранения состояния карты без каких-либо нарисованных наложенных линий, и таким образом, чтобы кадр за кадром я мог показать карту с новым состоянием наложенной линии поверх этого?

1 Ответ

0 голосов
/ 01 июля 2018

Решено, ниже примера !! Спасибо всем

SDL_Window *window; 
SDL_Renderer *render;
SDL_Texture *map; //map texture (my layer)

window = SDL_CreateWindow("Test window", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, 0);
render = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
map = SDL_CreateTexture(render,  SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, 640, 480); //Creating a texture

/*Map is a red background stored in map texture*/
SDL_SetRenderDrawColor(render, 255, 0, 0, 255);
SDL_SetRenderTarget(render, map);
SDL_RenderClear(render);
SDL_SetRenderTarget(render, NULL);

/*Seting the line color*/
SDL_SetRenderDrawColor(render, 0, 255, 0, 255);

/*Coping the map texture to the render and drawing a green line on top of this*/
SDL_RenderCopy(render, map, NULL, NULL);
SDL_RenderDrawLine(render, 0, 0, 640, 480);
SDL_RenderPresent(render);
SDL_Delay(2000);

/*Another line*/
SDL_RenderCopy(render, map, NULL, NULL);
SDL_RenderDrawLine(render, 0, 480, 640, 0);
SDL_RenderPresent(render);
SDL_Delay(2000);

SDL_DestroyWindow(window);
SDL_DestroyRenderer(render);
SDL_Quit();
...