gpt4 book ai didi

c - stb_truetype.h 和 SDL2 更改字体颜色

转载 作者:行者123 更新时间:2023-11-30 16:17:20 26 4
gpt4 key购买 nike

我正在使用 stb_truetype.h 和 SDL2 来渲染文本。有没有简单的方法来改变字体颜色?这是我所拥有的(文本是一个 char*):

while (*text) {
if (*text >= 32 && *text < 128) {
stbtt_aligned_quad q;
stbtt_GetBakedQuad(font->cdata, 512, 512, *text - 32, &x, &y, &q, 1);
SDL_Rect src_rect = {.x = (int)512 * q.s0 - 1,
.y = (int)512 * (q.t0) - 1,
.w = (int)512 * (q.s1 - q.s0) + 1,
.h = (int)512 * (q.t1 - q.t0) + 1};
SDL_Rect dst_rect = {
.x = q.x0, .y = q.y0, .w = q.x1 - q.x0, .h = q.y1 - q.y0};


// Has no effect because I am just grabbing a rect from the font data.
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
// Always renders the font white.
SDL_RenderCopy(renderer, font->texture, &src_rect, &dst_rect);
}
++text;
}

我希望能够以不同的颜色呈现字体。现在字体始终是白色的。

最佳答案

找到了一种方法来做到这一点,使用 SDL_SetTextureColorMod : ( https://wiki.libsdl.org/SDL_SetTextureColorMod )

SDL_SetTextureColorMod(font->texture, 255, 0, 0);

例如将字体变成红色。

我使用这个的原始代码:

while (*text) {
if (*text >= 32 && *text < 128) {
stbtt_aligned_quad q;
stbtt_GetBakedQuad(font->cdata, 512, 512, *text - 32, &x, &y, &q, 1);
SDL_Rect src_rect = {.x = (int)512 * q.s0 - 1,
.y = (int)512 * (q.t0) - 1,
.w = (int)512 * (q.s1 - q.s0) + 1,
.h = (int)512 * (q.t1 - q.t0) + 1};
SDL_Rect dst_rect = {
.x = q.x0, .y = q.y0, .w = q.x1 - q.x0, .h = q.y1 - q.y0};

// set the font texture to display red.
SDL_SetTextureColorMod(font->texture, 255, 0, 0);
SDL_RenderCopy(renderer, font->texture, &src_rect, &dst_rect);
}
++text;
}

关于c - stb_truetype.h 和 SDL2 更改字体颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56283683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com