Как заставить SDL_ttf работать с SDL2? - PullRequest
0 голосов
/ 05 мая 2020

Я недавно переключился с SDL 1.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);
}

Если кто-нибудь знает, как это исправить, помогите, пожалуйста.

1 Ответ

0 голосов
/ 08 мая 2020

Ну, я не совсем понимаю, что произошло, но я переустановил последнюю версию ttf и установил x86, но это не сработало, поэтому я попробовал x64, на всякий случай. Тоже не сработало. Затем я сбросил x86, и, к удивлению, он заработал.

...