C 无法找到SDL\u ttf不渲染的原因

C 无法找到SDL\u ttf不渲染的原因,c,sdl,codeblocks,C,Sdl,Codeblocks,我正在使用代码块,我已经安装了库,那里没有错误。。。 当我构建项目时,编译器说它没有错误,当我运行它时,它只是弹出一个窗口,在它的内部是黑色的,它应该出现“Hola Mundo…”字样。我在项目文件夹中得到了ariblk.ttf #include <stdio.h> #include <stdlib.h> #include <SDL.h> #include "SDL_ttf.h" int main(int argc, char *argv[]) { SDL

我正在使用代码块,我已经安装了库,那里没有错误。。。 当我构建项目时,编译器说它没有错误,当我运行它时,它只是弹出一个窗口,在它的内部是黑色的,它应该出现“Hola Mundo…”字样。我在项目文件夹中得到了ariblk.ttf

#include <stdio.h>
#include <stdlib.h>
#include <SDL.h>
#include "SDL_ttf.h"

int main(int argc, char *argv[]) {

SDL_Color bgcolor,fgcolor;
SDL_Rect rectangulo;
SDL_Surface *screen,*ttext;
TTF_Font *fuente;
const char texto[14]="Hola Mundo...";
char msg[14];
SDL_Event event;
int done = 0;

if (SDL_Init(SDL_INIT_VIDEO) < 0) {
printf("No se pudo iniciar SDL: %s\n",SDL_GetError());
return 1;
}

screen = SDL_SetVideoMode(640,480,24,SDL_HWSURFACE|SDL_DOUBLEBUF);
if (screen == NULL) {
printf("No se puede inicializar el modo gráfico: %s\n",SDL_GetError());
return 1;
}
atexit(SDL_Quit);

if (TTF_Init() < 0) {
printf("No se pudo iniciar SDL_ttf: %s\n",SDL_GetError());
return 1;
}
atexit(TTF_Quit);

fuente = TTF_OpenFont("ariblk.ttf",20);

if(fuente == NULL)
{
    printf("No se pudo cargar fuente %s",TTF_GetError());
}

fgcolor.r=200;
fgcolor.g=200;
fgcolor.b=10;
bgcolor.r=255;
bgcolor.g=0;
bgcolor.b=0;
sprintf(msg,"%s",texto);

ttext = TTF_RenderText_Shaded(fuente,msg,fgcolor,bgcolor);

rectangulo.y=100;
rectangulo.x=100;
rectangulo.w=ttext->w;
rectangulo.h=ttext->h;

SDL_SetColorKey(ttext,SDL_SRCCOLORKEY|SDL_RLEACCEL, SDL_MapRGB(ttext->format,255,0,0));

SDL_BlitSurface(ttext,NULL,screen,&rectangulo);

TTF_CloseFont(fuente);

SDL_FreeSurface(ttext);

while(done == 0)
        {
        while ( SDL_PollEvent(&event) )
            {
            if ( event.type == SDL_KEYDOWN )
            done = 1;
            }
        }

    return 0;
}
#包括
#包括
#包括
#包括“SDL_ttf.h”
int main(int argc,char*argv[]){
SDL_颜色bgcolor、fgcolor;
SDL_Rect rectangulo;
SDL_表面*屏幕,*ttext;
TTF_Font*fuente;
const char texto[14]=“Hola Mundo…”;
char-msg[14];
SDL_事件;
int done=0;
if(SDL_Init(SDL_Init_视频)<0){
printf(“不存在错误的SDL:%s\n”,SDL_GetError());
返回1;
}
屏幕=SDL_设置视频模式(640480,24,SDL_表面| SDL_双面);
如果(屏幕==NULL){
printf(“No se puede inicializar el modo gráfico:%s\n”,SDL_GetError());
返回1;
}
脱欧(SDL_退出);
if(TTF_Init()<0){
printf(“不存在文件中的SDL\u ttf:%s\n”,SDL\u GetError());
返回1;
}
退出(TTF_退出);
fuente=TTF_OpenFont(“ariblk.TTF”,20);
如果(fuente==NULL)
{
printf(“不支持%s”,TTF_GetError());
}
fgcolor.r=200;
fgcolor.g=200;
fgcolor.b=10;
bgcolor.r=255;
bgcolor.g=0;
bgcolor.b=0;
sprintf(msg,“%s”,texto);
ttext=TTF_渲染文字_着色(fuente、msg、fgcolor、bgcolor);
矩形y=100;
rectangulo.x=100;
rectangulo.w=ttext->w;
rectangulo.h=ttext->h;
SDL_SetColorKey(ttext,SDL_SRCCOLORKEY | SDL_RLEACCEL,SDL_MapRGB(ttext->格式,255,0,0));
SDL_BlitSurface(文本、空、屏幕和矩形);
TTF_CloseFont(富恩特);
SDL_自由曲面(ttext);
while(完成==0)
{
while(SDL_事件和事件))
{
if(event.type==SDL\u KEYDOWN)
完成=1;
}
}
返回0;
}
您需要调用以使更改在屏幕上可见。尝试添加
SDL\u翻转(屏幕)在源代码中的SDL_BlitSurface
之后。
希望这有帮助

您需要调用以使更改在屏幕上可见。尝试添加
SDL\u翻转(屏幕)在源代码中的SDL_BlitSurface
之后。

希望这有帮助

非常感谢,我是SDL的新手,这是一本书的例子,但是如果有一些错误,但是感谢你我修复了它,谢谢=)非常感谢,我是SDL的新手,这是一本书的例子,但是如果有一些错误,但是感谢你我修复了它,谢谢=)