如何使 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 的功能而不是 1.0 的功能,并用不是我自己的程序测试了 ttf,没有任何效果。通常,程序会一直运行,直到它必须打印文本,然后它才会关闭并发送 "process returned -1073741819",这是我所知道的程序中的错误消息,因为它应该 return 0。我尝试了 x64 和 x86,但是none 虽然 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,令人惊讶的是,它正在工作。
我最近出于某些程序需要从 SDL 1.0 切换到 2.0。我已经成功地让它像我使用的 SDL_image 一样工作。但是,出于某种原因,SDL_ttf 2.0 不适用于我的程序。我注意使用 2.0 的功能而不是 1.0 的功能,并用不是我自己的程序测试了 ttf,没有任何效果。通常,程序会一直运行,直到它必须打印文本,然后它才会关闭并发送 "process returned -1073741819",这是我所知道的程序中的错误消息,因为它应该 return 0。我尝试了 x64 和 x86,但是none 虽然 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,令人惊讶的是,它正在工作。