PDA

Ver la versión completa : Un poco de codigo...



Myquael
21/12/2005, 07:25
Llevo un rato intentando encontrar la manera de poder cambiar el fondo en la aplicacion, asi como definir el color de la fuente a la hora de hacer un printf, o cualquier otra funcion para pasar texto por pantalla. Deduzco que es una tonteria, pero ya no se me ocurre que mas hacer, y como aqui el nivel es bastante alto...Si no es mucha molestia, alguien que sepa, podria escribir el codigo para un programa simple, con fondo azul(mismamente), color de letra amarillo, i mensaje "Hola Mundo"(typical XD). plis

miq01
21/12/2005, 07:41
¿Puedes dar más detalles de lo que quieres hacer? ¿Quieres ejecutar algo en la consola o en tu ordenador? ¿Usando o sin usar SDL? Si es en la consola, creo que con printf no verás nada.

BuD
21/12/2005, 20:01
En teoria se llama "Hola mundo" a la aplicacion mas facil que puedes crear cuando inicias en un lenguaje, etc.
Yo creo que el "Hola mundo" perfecto para ti seria este ejemplo en SDL que dibuja un pixel en la pantalla:


#include "SDL.h"

#define SCREEN_WIDTH 320
#define SCREEN_HEIGHT 240
#define SCREEN_DEPTH 8

int main(int argc, char *argv[]) {
SDL_Surface *screen;
Uint8 *p;
int x = 10; //x coordinate of our pixel
int y = 20; //y coordinate of our pixel

/* Initialize SDL */
SDL_Init(SDL_INIT_VIDEO);

/* Initialize the screen / window */
screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_DEPTH, SDL_SWSURFACE);

/* Make p point to the place we want to draw the pixel */
p = (Uint8 *)screen->pixels + y * screen->pitch + x * screen->format->BytesPerPixel;

/* Draw the pixel! */
*p=0xff;

/* update the screen (aka double buffering) */
SDL_Flip(screen);
while(1);
}

Fuente: http://wiki.gp2x.org/wiki/Writing_an_SDL_Hello_World

Myquael
21/12/2005, 20:05
AAAHI ESTA LA CUESTION!. Quiero ejecutarlo en la GP2X, simplemente quiero ese codigo de ejemplo para saber como se cambia el color de fondo, como se aplica un color al texto, i principalmente, como se muestra texto. En la documentacion de SDL aparecen un porron de printf, he copiado todo ese codigo y aparecia el cursor, pero nada de texto. Como primera opcion he pensado que quiza el texto aparecia en negro, al igual que el fondo... :chupete: . Solo necesito eso, un simple "Hola Mundo", con el fondo de la pantalla en algun color, i el texto en algun otro color no predefinido, colocado en el centro de la pantalla, para ejecutarlo en la GP2X.

EDIT: Ese codigo que pones ya lo he probado, i consigo que funcione, pero no quiero que aparezca un cuadrado hecho por pixeles, quiero que aparezca TEXTO, i ahi es donde no encuentro ningun tipo de referencia en ningun sitio

lemon
21/12/2005, 20:53
http://www.libsdl.org/cgi/docwiki.cgi/SDL_5fttf

BuD
21/12/2005, 21:04
Con esta funcion puedes pintar la pantalla del color que quieras
http://docs.mandragor.org/files/Common_libs_documentation/SDL/SDL_Documentation_project_en/sdlfillrect.html
Para escribir texto en pantalla, mirate las SDL_ttf.

Myquael
21/12/2005, 21:55
Si SDL_ttf muy bien...resulta que no estan implementadas para GP2X, y si lo estan...no sera en la version que tengo yo de las SDL...Es precisamente despues de probar con ellas cuando he llegado a la conclusion de que tiene que haber otro metodo...

lemon
21/12/2005, 22:07
Si SDL_ttf muy bien...resulta que no estan implementadas para GP2X, y si lo estan...no sera en la version que tengo yo de las SDL...Es precisamente despues de probar con ellas cuando he llegado a la conclusion de que tiene que haber otro metodo...

Las SDL solo te dan soporte para gráficos, no para texto, asi que la única forma será que te crees "sprites" para cada carácter y los muestres tu mismo.

Sino, siempre puedes instalarte el sterm y ejecutar tu programita desde el. Si haces esto, todos tus "printf"s te serán mostrados sin mas trabajo.

miq01
21/12/2005, 22:07
Si SDL_ttf muy bien...resulta que no estan implementadas para GP2X, y si lo estan...no sera en la version que tengo yo de las SDL...Es precisamente despues de probar con ellas cuando he llegado a la conclusion de que tiene que haber otro metodo...
Sí que están implementadas. Léete este hilo (http://www.gp32spain.com/foros/showthread.php?t=25450). Creo que Hectorblanco las usa para su juego Debian vs Pimientos.

¿Otro método? A mano, aunque es mucho más laborioso y parece que no es lo que necesitas. Podrías crear un gráfico con todos los caracteres, cargarlo desde tu programa, y hacer una función que interprete tus strings (por ejemplo, el carácter 'c' está en la posición [128,0] de la imagen) y los pinte. Yo lo he hecho y funciona, pero ya digo que es bastante más laborioso. Te sale a cuenta ver qué es lo que tienen tus SDL_ttf que no tengan las de GP2X, aunque si lo que quieres es mostrar un simple texto sin hacer virguerías no creo que sea ese el problema.

Myquael
21/12/2005, 22:16
Voy a probar aver...

EDIT: PERFECTO, con esas librerias funciona todo de luxe, muchas gracias ;)
EDIT2: Pues Parece que NO.

Myquael
22/12/2005, 01:22
Compiler: GP2X
Building Makefile: "C:\Pruebas\Makefile.win"
Executing make...
make.exe -f "C:\Pruebas\Makefile.win" all
arm-linux-gcc.exe -c main.c -o main.o -I"C:/devkitPro/devkitGP2X/include" -I"C:/devkitPro/devkitGP2X/include/SDL"
arm-linux-gcc.exe main.o -o "Prueba1.exe" -L"C:/devkitPro/devkitGP2X/lib" -lSDL -lSDL_ttf -lpthread -static
C:/devkitPro/devkitGP2X/lib\libSDL_ttf.a(SDL_ttf.o): In function `TTF_Init':
SDL_ttf.c:(.text+0xbc): undefined reference to `FT_Init_FreeType'
C:/devkitPro/devkitGP2X/lib\libSDL_ttf.a(SDL_ttf.o): In function `TTF_OpenFontIndexRW':
SDL_ttf.c:(.text+0x448): undefined reference to `FT_Open_Face'
SDL_ttf.c:(.text+0x4cc): undefined reference to `FT_Set_Char_Size'
SDL_ttf.c:(.text+0x524): undefined reference to `FT_MulFix'
SDL_ttf.c:(.text+0x560): undefined reference to `FT_MulFix'
.
.
.
seguido de un largo etcetera(todas las funciones FT_...

¿Teneis alguna idea de como puedo solucionar eso?
Esas funciones que no reconoce son de las librerias freetype, las cuales he probado tambien a incluirlas, i nada de nada, los parametros que utilizo son:
-lSDL
-lSDL_ttf
-lpthread
-static

Y nada, que no hay manera de mostrar texto por pantalla...XD

BuD
22/12/2005, 20:17
A lo mejor te falta:
"kitdedesarollo"/bin/freetype-config --prefix="kitdedesarollo" --libs

Myquael
23/12/2005, 00:35
Lo solucione incluyendo libfreetype.a, la cual tambien necesitaba lz.a, pero bueno, consegui mostrar texto, que es lo importante, ahora solo queda, darle un uso responsable, XD

miq01
23/12/2005, 00:46
Guyfawkes ha creado un programa simple para testear SDL_mixer, SDL_image, SDL_ttf y los temporizadores. Como programa de ejemplo me parece muy bueno. Lo encontraréis aquí (http://www.gp32x.com/board/index.php?showtopic=23559).

firesign
23/12/2005, 16:12
¡Pues yo pruebo este ejemplo y el SDL_ttf me sigue petando! Los demas parece que van bien, si quito lo que corresponde al SDL_ttf del ejemplo, pero ese en concreto me falla. Mas tarde edito el mnsaje e incluyo la traza del error al compilar, pero basicamente es que no encuentra esa SDL...

Sin embargo, el resto de cosas que he intentado compilar antes de meterme yo a hacer mis pinitos me van bien. He compilado varios ejemplos de gente, las unicodefont que vienen con las fuentes de los emus de neogeocd, snes y nes, y todo ha ido bien.

¿Que leches puede ser?

miq01
24/12/2005, 00:05
¿Que leches puede ser?
¿Qué SDL utilizas para compilar para la consola? En este hilo (http://www.gp32spain.com/foros/showthread.php?t=25450) encontrarás la última versión.