elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Hola mundo en SDL2
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Hola mundo en SDL2  (Leído 5,023 veces)
aguaenSDL

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Hola mundo en SDL2
« en: 12 Enero 2016, 16:04 pm »

Hola gente Estoy siguiendo el tutorial_SDL.pdf para SDL1 y tengo unas pequeñas dudas de como compilarlo para SDL2.  Hasta ahora aprendí que debo poner : #include <SDL2/SDL.h> y para compilarlo por ejemplo : g++ -o test test1.c -lSDL2 , y compila a la perfección para algunos ejemplos. También con   :  g++ -o test test1.cpp `sdl2-config --cflags --libs` funciona a la perfección.

La idea es poder volver a escribir el tutorial este para sdl2 con licencia libre como estaba, con todos los ejemplos compilados funcioando en odt o en pdf, y pedirle permiso al autor, citarlo y poner otras cosas mas, todo en regla.

Aquí va el código fuente del hola mundo:

Código:

// Listado : Prueba.cpp
// Hola Mundo
// g++ -o test  Prueba.cpp `sdl2-config --cflags --libs`

#include <stdio.h>
#include <SDL2/SDL.h>


int main() {
SDL_Surface *pantalla; //Definimos una superficie
SDL_Event evento;      //Definimos una variable de eventos

// Inicializamos SDL

if (SDL_Init(SDL_INIT_VIDEO)) {
//En Caso de error
fprintf(sdterr,"Error al inicializar SDL: %s\n",SDL_GetError() );
exit(1);
}
atexit(SDL_Quit); // Al salir, cierra SDL
// Establecemos el modo de pantalla
pantalla = SDL_SetVideoMode(640,480,0,SDL_ANYFORMAT);
if (pantalla == Null) {
//Si no hemos podido inicializar la superficie
fprintf(stderr,"Error al crear la superficie: %s \n",SDL_GetError() );
exit(1);
}
// Personalizamos el título de la ventana
SDL_WM_SetCaption("Hola mundo",NULL);
//Bucle infinito
for(;;) {
//Consultamos los eventos
while (SDL_PollEvent(&evento)){
if (evento.type == SDL_QUIT) //si es de salida
return 0;
}
}
}


compilo con : g++ -o test  Prueba.cpp `sdl2-config --cflags --libs` y me salen errores de compilación

Citar
prueba.cpp: In function ‘int main()’:
prueba.cpp:17:11: error: ‘sdterr’ was not declared in this scope
   fprintf(sdterr,"Error al inicializar SDL: %s\n",SDL_GetError() );
           ^
prueba.cpp:22:40: error: ‘SDL_ANYFORMAT’ was not declared in this scope
  pantalla = SDL_SetVideoMode(640,480,0,SDL_ANYFORMAT);
                                        ^
prueba.cpp:22:53: error: ‘SDL_SetVideoMode’ was not declared in this scope
  pantalla = SDL_SetVideoMode(640,480,0,SDL_ANYFORMAT);
                                                     ^
prueba.cpp:23:18: error: ‘Null’ was not declared in this scope
  if (pantalla == Null) {
                  ^
prueba.cpp:29:37: error: ‘SDL_WM_SetCaption’ was not declared in this scope
  SDL_WM_SetCaption("Hola mundo",NULL);
                                   ^

Si alguien sabe algún  tutorial de SDL2, la verdad hace días que los busco y nada.

Desde ya muchas gracias y espero que varios también aprendan con mis dudas


En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Hola mundo en SDL2
« Respuesta #1 en: 12 Enero 2016, 16:32 pm »

Para empezar,
Citar
prueba.cpp:17:11: error: ‘sdterr’ was not declared in this scope
   fprintf(sdterr,"Error al inicializar SDL: %s\n",SDL_GetError() );
es stderr no sdterr

Citar
if (pantalla == Null) {

es NULL no Null


probaste con "pkg-config --cflags sdl2 --libs sdl2" en vez de  sdl2-config?


En línea

aguaenSDL

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Hola mundo en SDL2
« Respuesta #2 en: 12 Enero 2016, 16:45 pm »

Este Hola Mundo Si funciona según dicen a mi me dice falta el dispositivo de video  >:D. Espero les sirva.

Código:
#include <iostream>
#include "SDL2/SDL.h"
 
int main(int argc, char** argv){
    if (SDL_Init(SDL_INIT_EVERYTHING) == -1){
        std::cout << SDL_GetError() << std::endl;
        return 1;
    }
    SDL_Window *win = NULL;
    win = SDL_CreateWindow("Hola Mundo!", 100, 100, 640, 480, SDL_WINDOW_SHOWN);
    if (win == NULL){
        std::cout << SDL_GetError() << std::endl;
        return 1;
    }
 
    SDL_Renderer *ren = NULL;
    ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
    if (ren == NULL){
        std::cout << SDL_GetError() << std::endl;
        return 1;
    }
 
    SDL_Surface *bmp = NULL;
    bmp = SDL_LoadBMP("hello.bmp");
    if (bmp == NULL){
        std::cout << SDL_GetError() << std::endl;
        return 1;
    }
 
    SDL_Texture *tex = NULL;
    tex = SDL_CreateTextureFromSurface(ren, bmp);
    SDL_FreeSurface(bmp);
 
    SDL_RenderClear(ren);
    SDL_RenderCopy(ren, tex, NULL, NULL);
    SDL_RenderPresent(ren);
 
    SDL_Delay(2000);
 
    SDL_DestroyTexture(tex);
    SDL_DestroyRenderer(ren);
    SDL_DestroyWindow(win);
 
    SDL_Quit();
 
    return 0;
}

En línea

aguaenSDL

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Hola mundo en SDL2
« Respuesta #3 en: 12 Enero 2016, 16:58 pm »

Stakewinner00 Gracias por tomarte tu tiempo : ya corregí  sdterr por stderr, y ya probe tu sugerencia y me salen mucho menos errores gracias.  ;D , pero sigue sin compilar .
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Hola mundo en SDL2
« Respuesta #4 en: 13 Enero 2016, 11:27 am »

Si el inglés no es un problema para ti:
http://www.willusher.io/pages/sdl2/
En línea

aguaenSDL

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: Hola mundo en SDL2
« Respuesta #5 en: 14 Enero 2016, 15:08 pm »

gracias por el aporte ;-)
En línea

0xFer


Desconectado Desconectado

Mensajes: 400



Ver Perfil
Re: Hola mundo en SDL2
« Respuesta #6 en: 14 Enero 2016, 16:15 pm »

Si es en ingles es mejor, pero de todos modos te dejo este en español, que tiene como 700 páginas; http://www.mediafire.com/download/af7v8arym7ypx5q/tutorialWikiLibSDL-20080131.pdf
En línea

Código
  1. int getRandomNumber(){
  2.    return 4; //chosen by fair dice roll
  3.              //guaranteed to be random
  4. }
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Hola mundo en FASM
ASM
Erik# 3 6,162 Último mensaje 7 Julio 2009, 09:48 am
por Eternal Idol
Virus hola mundo c++? « 1 2 »
Programación C/C++
dani__ 12 8,778 Último mensaje 13 Junio 2010, 00:14 am
por dani__
Hola Mundo
Ingeniería Inversa
soez 9 6,143 Último mensaje 16 Julio 2010, 00:36 am
por karmany
Hola Mundo!
Programación C/C++
GROV 2 2,282 Último mensaje 10 Septiembre 2012, 03:25 am
por GROV
Hola mundo
Programación General
bacanzito 0 1,771 Último mensaje 5 Febrero 2014, 02:20 am
por bacanzito
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines