Конвертировать текстуру в массив Uint32
Можно ли преобразовать текстуру, включая текст, в массив Uint32, не растягивая текст до размеров окна? Мне нужно проверить соседние пиксели, и я знаю, как это сделать только с массивами Uint32. Код по большей части скопирован из учебного пособия, и я добавил комментарии в игровой цикл, которые показывают, как я обычно визуализирую текстуру с использованием массивов Uint32.
#include <iostream>
#include <SDL.h>
#include <SDL_ttf.h>
using namespace std;
int main(int argc, char ** argv)
{
bool quit = false;
SDL_Event event;
SDL_Init(SDL_INIT_VIDEO);
TTF_Init();
SDL_Window * window = SDL_CreateWindow("Merry
Christmas", SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED, 1000, 1000, 0);
SDL_Renderer * renderer = SDL_CreateRenderer(window,-1, SDL_RENDERER_PRESENTVSYNC);
TTF_Font * font = TTF_OpenFont("/home/Michael/.fonts/NewAmsterdam.ttf", 100);
const char * error = TTF_GetError();
SDL_Color color = { 255, 255, 255 };
SDL_Surface * surface = TTF_RenderText_Solid(font,
"Merry Christmas", color);
SDL_Texture * texture = SDL_CreateTextureFromSurface(renderer, surface);
int texW = 0;
int texH = 0;
SDL_QueryTexture(texture, NULL, NULL, &texW, &texH);
SDL_Rect dstrect = { 200, 400, texW, texH };
while (!quit)
{
SDL_WaitEvent(&event);
switch (event.type)
{
case SDL_QUIT:
quit = true;
break;
}
SDL_RenderCopy(renderer, texture, NULL, &dstrect);
SDL_RenderPresent(renderer);
// SDL_UpdateTexture(texture, NULL, buffer, SCREEN_WIDTH * sizeof(Uint32));
// SDL_RenderClear(renderer);
// SDL_RenderCopy(renderer, texture, NULL, NULL);
// SDL_RenderPresent(renderer);
}
SDL_DestroyTexture(texture);
SDL_FreeSurface(surface);
TTF_CloseFont(font);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
TTF_Quit();
SDL_Quit();
return 0;
}