Окно SDL - рендеринг спрайта C ++ - PullRequest
0 голосов
/ 18 декабря 2018

Я не уверен, где я ошибаюсь при рендеринге спрайта.Из того, чему меня учили в лекциях, для рендеринга PNG у вас сначала должна быть поверхность, в которую вы загружаете файл, затем вы должны иметь текстуру и создавать текстуру из поверхности, затем вы освобождаете пространство и затем оно должно выводить его?Куда я здесь не так?Это может быть путь к файлу?Если так, то я попытался поместить полный каталог и все?

Вот мой код:

case 2:
{
    //game code..............

    SDL_SetRenderDrawColor(renderer, 255, 210, 0, 0);
    SDL_RenderClear(renderer);

    SDL_Texture* sprite;
    SDL_Texture* blockt;
    SDL_Texture* points;
    SDL_Surface* blockS;
    SDL_Surface* windowS;
    SDL_Surface* temp;

    blockS = IMG_Load("Barriers.png");
    blockt = SDL_CreateTextureFromSurface(renderer, blockS);
    SDL_FreeSurface(blockS);

    SDL_RenderPresent(renderer);
}
break;

Попытайтесь игнорировать темп и материал, который я только что пробовал разные вещи, которые я видели оставил некоторый код там.В основном просто нужно знать, почему это не работает.У меня есть SDL_INIT_EVERYTHING вверху, а также IMG_Init (SDL_INIT_EVERYTHING), и я включил заголовок SDL_image.h.

1 Ответ

0 голосов
/ 18 декабря 2018

Вы фактически должны нарисовать текстуру, используя SDL_RenderCopy (до SDL_RenderPresent).

Обратите внимание, что после получения текстуры освобождение исходной поверхности не имеет значения (хотяВы хотите освободить его в какой-то момент).То, что вы делаете с ним, не изменит эту текстуру;они являются отдельными объектами.Все, что вам нужно сделать, это визуализировать текстуру.

Кроме того, посмотрите на вики ( вот страница категории визуализации ).Это должно дать вам лучшее понимание того, что вы можете сделать.

...