如何让SDL_ttf与SDL2配合使用?

问题描述 投票:0回答:1

我最近因为一些程序的需要,从SDL1.0切换到2.0。我已经成功地使它和我使用的SDL_image一样工作。但是,由于某些原因,SDL_ttf 2.0在我的程序中不能工作。我已经注意使用2.0的功能,而不是1.0的功能,并且用非我自己的程序测试了ttf,没有任何效果。通常情况下,程序运行,直到它必须打印文本,然后它关闭,并发送 "进程返回-1073741819",这是我所知道的程序中的错误信息,它应该返回0。我尝试了x64和x86,但没有一个工作,虽然x86似乎给更好的结果。

#include <stdlib.h>
#include <stdio.h>
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_ttf.h>

int main()
{
  SDL_Surface *logo = NULL, *Wreed, *Reminder, *ecran = NULL;
  SDL_Window *window = NULL;
  SDL_Texture *textureLogo = NULL, *textureWreed = NULL, *textureReminder = NULL;
  SDL_Rect positionLogo = {1100/2 - 600/2, 700/2 - 600/2, 600, 600}, /*positionWreed,*/ positionReminder;
  TTF_Font *police = NULL;
  SDL_Color couleur = {0,0,0};
  SDL_Renderer* renderer;


police = TTF_OpenFont("arial.ttf", 40);

window = SDL_CreateWindow("Wreed Reminder", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1100, 700, SDL_WINDOW_OPENGL);
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
ecran = SDL_GetWindowSurface(window);

SDL_RenderClear(renderer);

Wreed = TTF_RenderText_Blended(police, "Wreed", couleur);
textureWreed = SDL_CreateTextureFromSurface(renderer, Wreed);
SDL_Rect positionWreed = {10, 10, 10, 10};
SDL_RenderCopy(renderer, textureWreed, NULL, &positionWreed);

SDL_RenderPresent(renderer);

SDL_Delay(5000);
}

如果有人知道如何解决这个问题,请帮助我。

c sdl-2 sdl-ttf
1个回答
0
投票

好吧,我不知道发生了什么,但我重新安装了最新版本的ttf,并设置了x86,但它没有工作,所以我试了x64,以防万一。也没有工作。然后,我重新设置了x86,惊喜的是,它工作了。

© www.soinside.com 2019 - 2024. All rights reserved.