繁体   English   中英

如何使 SDL_ttf 与 SDL2 一起工作?

[英]How to make the SDL_ttf work with the SDL2?

由于某些程序的需要,我最近从 SDL 1.0 切换到 2.0。 我已经成功地让它和我使用的 SDL_image 一样工作。 但是,出于某种原因,SDL_ttf 2.0 不适用于我的程序。 我注意使用 2.0 的 function 而不是 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);
}

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

好吧,我不太清楚发生了什么,但我重新安装了最新版本的 ttf 并设置了 x86 但它没有用,所以我尝试了 x64,以防万一。 也没用。 然后,我重置 x86,令人惊讶的是,它正在工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM