lacabra25 escribió:Haber si lo he entendido, van a quitar eso de SDL, entonces no se podra copiar superficies cargadas desde archivos a la superficie de pantalla tal y como se hace con SDL normalmente ¿no?, entonces, una vez que tenga cargada una imagen en una superficie de SDL, ¿como puedo copiarla a la pantalla mediante OpenGL (supongo que ya lo imaginareis, pero, me estoi refiriendo a aparte de usar OpenGL para el 3D a tambien, de alguna manera, poder mostrar imagenes 2D en pantalla)? ¿OpenGL soporta todo lo que SDL soporta, como lo del color key y todo eso? ¿podrias indicarme documentacion, o algo con lo que poder aprender a trabajar en 2D ademas de en 3D con OpenGL?
Sobre lo de que la pantalla se libere cuando acabe el programa, esta bien, pero aun asi creo que es mas eficiente (sobretodo cuando se este trabajando con muchas superficies en memoria y otras estructuras de datos dinamicas) que cuando se vaya a finalizar el programa se libere la superficie de la pantalla (que en principio se supone que es la superficie de mayor tamaño del programa) para asi ya dejarla liberada para otros programas en lo que se continua liberando el resto de memoria dinamica y realizando otras tareas que sean necesarias antes de finalizar el programa (guardar configuraciones, records, tec, etc), no se que os parecera a los demas, pero me aprece bien el liberar la superficie de la pantalla.
Gracias por la ayuda nuevamente.
Bueno primero una aclaracion que tiene que ver solo con SDL. Teoricamente, si no te olvidas de llamar a SDL_Quit() cuando termina el programa, todos los recursos que tomo SDL los va a liberar. Es decir que no tendrian que quedar memory leaks. Pero no es una buena practica, ya que algunas veces usas una superficie temporal para hacer una conversion que despues no vas a necesitar y ahi si necesitas hacer SDL_FreeSurface(temporal) para optimizar la aplicacion.
Con respecto a tus dudas; en primer lugar no se recomienda mezclar SDL y OpenGL para la parte grafica (de ahi que SDL_OPENGLBLIT sea deprecated).
A SDL generalmente se lo usa para crear el contexto renderizable y manejar los eventos. Despues para la parte grafica se usa OpenGL, que es exactamente lo unico que hace. OpenGL no gestiona sonidos, ni eventos ni nada. Tampoco carga imagenes de distintos formatos. Por esto ultimo, tenes que usar una libreria para cargar imagenes, que tranquilamente puede ser SDL.
Ahora la question es que OpenGL no se maneja con superficies, si no que utiliza lo que se llama "texturas". La idea básica, es que con por ej SDL_image cargas una imagen y luego la "transformas" en una textura con OpenGL. En el primer tutorial que te pase, hay una seccion que explica como hacerlo.
OpenGL soporta todo y mucho mas de lo que soporta SDL, pero de otra manera. Es bastante dificil de explicar en un foro y la documentacion en español no existe practicamente(ya en ingles encontrar un buen tutorial de SDL/OpenGL es raro, y muchisimo mas si lo queres explicado para GNU/Linux

).
Pero bueno lo unico que te puedo recomendar son dos cosas:
1-Tener buenos conocimientos de Algebra Lineal (especificamente
vectores y matrices) y Analisis . Porque? bueno porque OpenGL se maneja con transformaciones que se aplican a distintos puntos o vertices. Explicado muy vagamente, a un punto que tiene 3 coordenadas (vector (x,y,z)) le vas aplicando diferentes transformaciones de rotacion, escalado, traslacion etc para representarlo en un espacio. Y basicamente esas transformaciones es multiplicar el vector por la matriz correspondiente a la transformacion que queres aplicar. Asi que es un requisito manejarse bien (no ser un matematico) con Algebra.
2- El unico tutorial decente que encontre en español es este:
http://unsitioweb.com/videojuegos tiene 2 ventajas y 2 desventajas.
Primero las ventajas:
-Esta en español
-Esta explicado MUY bien, con esto me refiero a que te enseña a entender lo que estas haciendo y no solamente te da la informacion.
Desventajas:
-Lamentablemente (por lo menos para mì) esta destinado para Windows y ni siquiera usa SDL, si no que usa la WinAPI32. Que realmente es un dolor de huev... y si no tenes idea de usarla (ademas que es bastante enquilombada) tratar de aprender algo complicado como OpenGL usando la WinAPI32 puede ser molesto.
-La otra desventaja es que esta basado en el estandar de OpenGL 1.1, que a esta altura ya es muy viejo (se va por OpenGL 3.0 y la diferencia es mucha). No te creas que el tutorial es viejo, el que lo escribio lo hizo hace un par de meses, pero bueno no esta actualizado principalmente porque Windows dejo de dar soporte a OpenGL justamente en la 1.1 y se dedico a Directx(Esto NO quiere decir que no se pueda correr OpenGL 3 en Windows).
Pero igualmente la parte teorica esta muy interesante.
Por ultimo si queres aprender bien OpenGL, algun dia vas a tener que comprarte un libro, porque libros si hay muchos. Pero eso si, todos en ingles.
Bueno espero haberte ayudado en algo (seguro que la complique

)
Saludos