Foros del Web » Programación para mayores de 30 ;) » C/C++ »

TTF_RenderText

Estas en el tema de TTF_RenderText en el foro de C/C++ en Foros del Web. Buenas. He estado haciendo pruebas últimamente con la libreria SDL, aplicada en visual studio 2008. Todo bien hasta que empiezo a aplicar texto, al intentar ...
  #1 (permalink)  
Antiguo 26/04/2009, 09:57
 
Fecha de Ingreso: diciembre-2008
Ubicación: Vigo, Spain
Mensajes: 141
Antigüedad: 15 años, 4 meses
Puntos: 12
TTF_RenderText

Buenas.

He estado haciendo pruebas últimamente con la libreria SDL, aplicada en visual studio 2008.

Todo bien hasta que empiezo a aplicar texto, al intentar renderizar el texto para poder sacarla por pantalla, no importa el tipo que use (Solid/Shaded/Blended) me salta un error (no de compilacion):

Excepción no controlada en 0x6f4c237b en testTTF.exe: 0xC0000005: Infracción de acceso al leer la ubicación 0x00000000.

Ni idea de porque pueda ser, y el debug me señala:

txt = TTF_RenderText_Shaded(fuente,msg,fgcolor,bgcolor);

Si hay alguna sugerencia, bienvenida será.

Gracias.
  #2 (permalink)  
Antiguo 26/04/2009, 15:30
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: TTF_RenderText

Tenes algun puntero nulo seguramente, depuralo y comproba los parametros que le pasas a TTF_RenderText_Shaded.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 26/04/2009, 17:01
 
Fecha de Ingreso: diciembre-2008
Ubicación: Vigo, Spain
Mensajes: 141
Antigüedad: 15 años, 4 meses
Puntos: 12
Respuesta: TTF_RenderText

Es el codigo de ejemplo copiado de un tutorial..

Código:
/***************************************************************************
Ejemplo4_1
(C) 2003 by Alberto Garcia Serrano
Programación de videojuegos con SDL
***************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <SDL.h>
#include "SDL_ttf.h"

int main(int argc, char *argv[])
 {
SDL_Color bgcolor,fgcolor;
SDL_Rect rectangulo;
SDL_Surface *screen,*ttext;
TTF_Font *fuente;
const char texto[14]="Hola Mundo...";
char msg[14];
SDL_Event event;
int done = 0;
// Inicializamos SDL
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
printf("No se pudo iniciar SDL: %s\n",SDL_GetError());
return 1;
}
// Inicializamos modo de video
screen = SDL_SetVideoMode(640,480,24,SDL_HWSURFACE|SDL_DOUBLEBUF);
if (screen == NULL) {
printf("No se puede inicializar el modo gráfico: \n",SDL_GetError());
return 1;
}
atexit(SDL_Quit);
// Inicializamos SDL_ttf
if (TTF_Init() < 0) {
printf("No se pudo iniciar SDL_ttf: %s\n",SDL_GetError());
return 1;
}
atexit(TTF_Quit);
// carga la funte de letra
fuente = TTF_OpenFont("ariblk.ttf",20);
// inicializa colores para el texto
fgcolor.r=200;
fgcolor.g=200;
fgcolor.b=10;
bgcolor.r=255;
bgcolor.g=0;
bgcolor.b=0;
sprintf(msg,"%s",texto);
ttext = TTF_RenderText_Shaded(fuente,msg,fgcolor,bgcolor);
rectangulo.y=100;
rectangulo.x=100;
rectangulo.w=ttext->w;
rectangulo.h=ttext->h;
// Usamos color rojo para la transparencia del fondo
SDL_SetColorKey(ttext,SDL_SRCCOLORKEY|SDL_RLEACCEL, SDL_MapRGB(ttext->format,255,0,0));
// Volcamos la superficie a la pantalla
SDL_BlitSurface(ttext,NULL,screen,&rectangulo);
// destruimos la fuente de letra
TTF_CloseFont(fuente);
// liberar superficie
SDL_FreeSurface(ttext);
// Esperamos la pulsación de una tecla para salir
while(done == 0) {
while ( SDL_PollEvent(&event) ) {
if ( event.type == SDL_KEYDOWN )
done = 1;
}
}
return 0;
}
Un poco molesto de leer porque no tiene las tabulaciones, pero no me da ningun error al compilarlo.

Al llegar a la parte del texto (cualquier ejemplo que use) me salta aquel error, y me señala esa linea del TTF_RenderText.

¿Que otro problema puede ser?

Gracias por responder
  #4 (permalink)  
Antiguo 27/04/2009, 01:54
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: TTF_RenderText

fuente debe apuntar a NULL, comprobalo depurando o agrega este codigo:

Código:
if(!font) {
    printf("TTF_OpenFont: %s\n", TTF_GetError());
    // handle error
}
http://sdl.beuc.net/sdl.wiki/SDL_ttf...t_TTF_OpenFont
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 27/04/2009, 02:51
 
Fecha de Ingreso: diciembre-2008
Ubicación: Vigo, Spain
Mensajes: 141
Antigüedad: 15 años, 4 meses
Puntos: 12
Respuesta: TTF_RenderText

Edit: Solucionado :D

Tenia problemas al cargar la fuente (ej. arial.ttf), ubicandola en la carpeta del proyecto lo ha solucionado todo.

Gracias por la ayuda me encamino hacia el problema :D

Última edición por Annoying; 27/04/2009 a las 03:31
  #6 (permalink)  
Antiguo 27/04/2009, 04:05
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: TTF_RenderText

De nada, era exactamente ese el problema:

font
*Font to render the text with. Must be non-NULL.

http://sdl.beuc.net/sdl.wiki/SDL_ttf...derText_Shaded
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #7 (permalink)  
Antiguo 29/04/2009, 04:16
 
Fecha de Ingreso: diciembre-2008
Ubicación: Vigo, Spain
Mensajes: 141
Antigüedad: 15 años, 4 meses
Puntos: 12
Respuesta: TTF_RenderText

Otra duda, al hacer lo del texto, imprimirlo por pantalla mientras que se presionan las teclas, quisiera que al presionar enter ese texto se registre en la variable deseada (eso esta listo) y que se borre ese texto para poder introducir otro en esa misma posicion, el problema es que no se borra y lo que hace es ir sustituyendo las letras a medida que se presionan :/

Alguna sugerencia?
Gracias
  #8 (permalink)  
Antiguo 29/04/2009, 04:34
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: TTF_RenderText

Mmm y si cuando le das a enter escribis espacios donde antes hubo letras ...
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #9 (permalink)  
Antiguo 30/04/2009, 05:35
 
Fecha de Ingreso: diciembre-2008
Ubicación: Vigo, Spain
Mensajes: 141
Antigüedad: 15 años, 4 meses
Puntos: 12
Respuesta: TTF_RenderText

Si asi lo solucione, no tenia chance de revisar el foro

A ver si no salen mas dudas, gracias
  #10 (permalink)  
Antiguo 30/04/2009, 05:37
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: TTF_RenderText

De nadas
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:10.