2014-12-19 73 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

我不知道,如果它是可能的,但你可能要考慮負荷調整後的指標,或者如果不工作,使用的字體更適合你的目的。