2014-12-19 37 views
0

我一直在用SDL开发一段时间, ,但我认为我需要另一个挑战。 所以我决定用SDL_TTF在屏幕上画一些文字。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

我想通过评论问你更多的信息,因为对我来说,它看起来是渲染的作品确定。但是我不能写评论,因为我没有足够的声望,而且我从来没有得到足够的评论声誉,如果我不回答,所以我会“回答”,并希望网站版主在某个时候重新考虑限制/要求提供更多信息,以便能够回答问题(获得足够的信誉以征求更多信息)。

就像说的那样,对我来说,它看起来,渲染工作正常。 “差距”来自字体指标。可以找到某种介绍TTF字体指标,例如在这里:

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

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

我不知道,如果它是可能的,但你可能要考虑负荷调整后的指标,或者如果不工作,使用的字体更适合你的目的。