SDL_TTF渲染错误的地方

时间:2014-12-19 14:22:01

标签: c++ drawing sdl-2 sdl-ttf

我一直在用SDL开发一段时间了, 但我认为我需要另一个挑战。 所以我决定使用SDL_TTF在屏幕上绘制一些文字。

我尝试将文本渲染为0,0但它略低于屏幕边框。 这意味着它不能完全呈现0,0。

此代码仅用于测试目的。

以下是我当时用于测试的代码:

#include <SDL.h>
#include <SDL_ttf.h>
#include <iostream>

int main(int argc, char* args[])
{
SDL_Texture* tex;

SDL_Init(SDL_INIT_EVERYTHING);
SDL_Window *win = SDL_CreateWindow("Font drawing test", 100, 100, 640, 480, SDL_WINDOW_SHOWN);
SDL_Renderer *ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
TTF_Init();

while (true)
{
    SDL_RenderClear(ren);
    TTF_Font* font = TTF_OpenFont("./Resources/test.ttf", 72);
    SDL_Surface *surf = TTF_RenderText_Blended(font, "Test", SDL_Color{ 255, 255, 255, 255 });
    tex = SDL_CreateTextureFromSurface(ren, surf);
    SDL_RenderCopy(ren, tex, NULL, new SDL_Rect{ 0, 0, 100, 100 });
    SDL_RenderPresent(ren);
    SDL_DestroyTexture(tex);
    SDL_FreeSurface(surf);
    TTF_CloseFont(font);
}



SDL_DestroyTexture(tex);
SDL_DestroyRenderer(ren);
SDL_DestroyWindow(win);
SDL_Quit();
return 0;
}

这就是它在屏幕上的样子: Font drawing location

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我想通过评论向您询问更多信息,对我来说,看起来渲染工作正常。但我不能写评论,因为我没有足够的声誉,如果我不回答,我就没有足够的声誉来评论,所以我正在“回答”,并希望网站版主在某些时候重新考虑要求更多信息以便能够回答的问题的限制/要求(获得足够的声誉以获取更多信息)。

就像说的那样,对我来说看起来渲染效果还不错。 “差距”来自字体指标。可以找到某种介绍TTF字体指标,例如这里:

https://www.libsdl.org/projects/SDL_ttf/docs/SDL_ttf_38.html

http://chanae.walon.org/pub/ttf/ttf_glyphs.htm

我不确定是否可行,但您可能需要考虑在加载后调整指标,或者如果不起作用,请使用更适合您的字体。