1

yop,

Je n'arrive pas à afficher du texte avec SDL_TTF, malgré moultes tests.

En désespoir de cause, je compile ce tets : https://bitbucket.org/dandago/gigilabs/src/8915845ffec6663cb64d67309cb13c6304ee4ca2/Sdl2Ttf/Sdl2Ttf/main.cpp?at=master
C'est basiquement ce que mon code fait, même si évidemment mon projet est plus structuré qu'un test case.
Et là, même résultat : le Groenland dans la fenêtre SDL.

Note : mon programme ne plante pas, je check tous les appels à SDL ou autre, RAS. Fin de l'exécution sans erreur. Mais yauntruckiveupas.

Si une bonne âme a du temps à consacrer à me sortir de là, voici les quelques fichiers nécessaires pour un test :
Arial.ttf : https://www.mirari.fr/VZPs
SDL2.dll : https://www.mirari.fr/ydvl
SDL_ttf.dll : trop gros (43 Mo oO)

J'utilise Win10 et MinGW.

Merci d'avance !

2

Bon, ben le bug vous est bien connu, c'était moi. Et étrangement, l'exemple cité plus haut ne marche toujours pas grin

Une bête variable static masquée par une redéclaration locale. C'est ça de vouloir faire de l'encapsulation en C.
J'avais pensé à ça (quand même !), mais vérifié toutes les autres variables sauf celle-là grin

3

Si ca t'interesse tu peux toujours comparer avec ce que je fait ici:


Godzil/2dphysicenginetrac.godzil.net
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

4

voila comment je fait avec SDL2
if (TTF_Init() < 0) return (false); pWindow = SDL_CreateWindow("Win32 + SDL2 template", x, y, SCREEN_WIDTH, SCREEN_HEIGHT, 0); if (!pWindow) return (false); pRenderer = SDL_CreateRenderer(pWindow, -1, SDL_RENDERER_ACCELERATED); if (!pRenderer) return (false); GraphFont = TTF_OpenFont("mafont.ttf", 8); if (!GraphFont) return (false); TextTexture = SDL_CreateTexture(pRenderer, SDL_GetWindowPixelFormat(pWindow), SDL_TEXTUREACCESS_STREAMING, 512, 32); if (!TextTexture) return (false); void Graph_RenderText(int x, int y, char *text, uint32_t color, eTextJustify justify) { SDL_Color fg = {(color >> 16) & 0xFF, (color >> 8) & 0xFF, color & 0xFF, SDL_ALPHA_OPAQUE}; SDL_Color bg = {0, 0, 0, SDL_ALPHA_OPAQUE}; SDL_Surface *surf = TTF_RenderText_Shaded(GraphFont, text, fg, bg); if (surf) { SDL_Rect pos = {x, y, surf->w, surf->h}; SDL_Surface *tsurf = SDL_ConvertSurface(surf, SDL_GetWindowSurface(pWindow)->format, 0); if (justify == TEXT_JUSTIFY_CENTER) pos.x = x - (surf->w / 2); else if (justify == TEXT_JUSTIFY_RIGHT) pos.x = x - surf->w; SDL_UpdateTexture(TextTexture, &tsurf->clip_rect, tsurf->pixels, tsurf->pitch); SDL_RenderCopy(pRenderer, TextTexture, &tsurf->clip_rect, &pos); SDL_FreeSurface(tsurf); SDL_FreeSurface(surf); } }

après la j'update une texture fixe avec le texte rendu, mais on peut faire autrement, par exemple créer une texture a partir de la surface créée par TTF_RenderText

5

moi j'utilise freetype cheeky
et la le mec il le pécho par le bras et il lui dit '

6

Tu aimes te faire mal.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

7

(edit -> deubeul cross, je pensais poster après Orion)

Et c'est ce que je fais, c'est le plus simple à première vue (je découvre les concepts de SLD2).

Merci à vous deux en tout cas.

En tout cas j'enrage quand même un peu. Je compile avec -Wall -Wextra, et aucun warning pour me dire que je masque une variable, merci GCC. En 2022, on peut s'attendre à ce genre de détection d'erreur basique de la part d'un compilateur...

8

Folco: -Wshadow


-Wshadow
Warn whenever a local variable or type declaration shadows another variable, parameter, type, class member (in C++), or instance variable (in Objective-C) or whenever a built-in function is shadowed. Note that in C++, the compiler warns if a local variable shadows an explicit typedef, but not if it shadows a struct/class/enum. If this warning is enabled, it includes also all instances of local shadowing. This means that -Wno-shadow=local and -Wno-shadow=compatible-local are ignored when -Wshadow is used. Same as -Wshadow=global.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

9

Ah merci ! Je ne sais pas jusqu'où faut fouiller pour avoir ce genre de services élémentaires...

10

chaque version de GCC a son set de warning pour -Wall / -Wextra

Ceci dit -Wall devrait l'activer
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

11

Non, je viens de vérifier. Il est bien dans la ligne de compilation, mais j'ai du l'activer explicitement pour avoir une alerte.
Le pire était que je pensais que c'était activé quand j'avais le bug, donc je ne me suis pas plus méfié que ça !

Enfin, je découvre SDL2. Je commence à prendre mes marques :
#define COLOR_BLACK      0, 0, 0
#define COLOR_DARK_GREY  85, 85, 85
#define COLOR_LIGHT_GREY 170, 170, 170
#define COLOR_WHITE      255, 255, 255
tripo

12

grin
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

13

#ff00ff for the win \o/

./6 pas vraiment, je ne m'en sers que pour générer à la taille voulue chaque char à afficher, ensuite je les fous en cache dans mon propre format, charger une fonte et demander la génération d'un char ne prend que quelques lignes
c'est sur que je n'utilise au final pas le vrai potentiel des fontes mais je prend en compte la vrai taille et position de chaque char, un juste milieu entre old et new school on va dire cheeky
et la le mec il le pécho par le bras et il lui dit '