Я пытаюсь представить текст следующим кодом:
void Text::display(SDL_Renderer *renderer, int x, int y) {
// pos is an SDL_Rect and font is a TTF_Font
pos.x = pos.w = x;
pos.y = pos.h = y;
SDL_Surface *surface = TTF_RenderText_Solid(font, text.c_str(), color);
SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, surface);
SDL_QueryTexture(texture, NULL, NULL, &pos.w, &pos.h);
SDL_RenderCopy(renderer, texture, NULL, &pos);
SDL_FreeSurface(surface);
SDL_DestroyTexture(texture);
}
В моем классе Text . Сначала у меня был неинициализированный SDL_Color color
в моем методе Text::display()
, который позволял мне отображать текст на экране. (renderer
передается из основных + координат x,y
). Но я решил вместо этого сделать свою SDL_Color color
частной переменной в классе Text
. И что для меня странно, так это то, что в качестве частной переменной текст мерцал, когда я его представил, но если я установил его как переменную publi c или поместил в метод, текст не мерцал. Или если бы я инициализировал его как частную переменную (SDL_Color color = {255, 255, 255}
).
Мой вопрос: , если бы только чистая удача работала, когда color
не был инициализирован как publi c или переменная метода или они по-разному трактуются? Когда я инициализировал цвет в конструкторе, он также мерцал, если цвет был частным.
Мой основной метод:
void fpsCap(Uint32 starting_tick) {
if ((1000 / fps) > SDL_GetTicks() - starting_tick) {
SDL_Delay(1000 / fps - (SDL_GetTicks() - starting_tick));
}
}
int main(int argv, char** args) {
// Create renderer, window, etc
while (true) {
SDL_RenderClear(renderer);
Text *txt = new Text("hello");
txt->display(gui->getRenderer(), 0, 0);
SDL_RenderPresent(renderer);
}
}