私はテーブルの形式でテクスチャにchar配列を表示しようとしています。それはうまく動作しますが、レンダラー全体をリロードすることなく、配列の一部のchar(テーブルの値)を動的に変更したいと思います。画面の一部だけをテクスチャとレンダラで更新しますか?
もう一度SDL_RenderClear
とSDL_RenderPresent
を使ってみましたが、ウィンドウ全体がクリアされました。
テーブルの一部だけを選択し、残りの部分を変更せずに変更するにはどうすればよいですか?
void draw_battlefield(t_env *e, int origin_x, int origin_y, int width, int height)
{
int j;
float x;
float y;
SDL_Color color = {255, 0, 0, 0};
SDL_Surface *surface;
SDL_Texture *texture;
int texW = 0;
int texH = 0;
SDL_Rect dstrect;
j = -1;
x = (float)origin_x;
y = origin_y;
while (++j < 4096)
{
surface = TTF_RenderText_Solid(e->font_nb, base((unsigned char)e->battlefield[j]), color);
texture = SDL_CreateTextureFromSurface(e->renderer, surface);
texW = 0;
texH = 0;
SDL_QueryTexture(texture, NULL, NULL, &texW, &texH);
dstrect = fill_rect((int)x, (int)y, &texW, &texH);
x += ((float)width/64);
SDL_RenderCopy(e->renderer, texture, NULL, &dstrect);
if ((j & 0x3f) == 0x3f)
{
x = (float)origin_x;
y += ((float)height/64);
}
SDL_DestroyTexture(texture);
SDL_FreeSurface(surface);
}
}
各フレームの再描画画面は完全に正常です。 – HolyBlackCat