Foros - Stratos

Proyectos => IndieLib => Mensaje iniciado por: Loover en 20 de Febrero de 2005, 08:17:38 PM

Título: Ventana E Input ¿sdl?
Publicado por: Loover en 20 de Febrero de 2005, 08:17:38 PM
 El primer paso para portar LooverLib a otras plataformas es eliminar todas las dependencias con win32 (después vendrá el tema de pasar de D3d a ogl). Looverlib utiliza win32 para crear la ventana, para el input con el ratón y el teclado y para los temporizadores (GetTickCount).

Así que busco algo que me permita crear una ventana, temporizadores e input y sea multiplataforma. He pensado en SDL.

Lo que me da pena es que voy a usar SDL únicamente para esas cosas, no para dibujar (LooverLib ya se encarga de eso).

¿Cómo lo veis vosotros?
Título: Ventana E Input ¿sdl?
Publicado por: Sacrifai en 20 de Febrero de 2005, 08:48:02 PM
 Umm, wxwidgets a lo mejor podría servirte, cierto que en parte es una locura, pero podría tener mas cosas que te interesen.
Título: Ventana E Input ¿sdl?
Publicado por: Minos en 20 de Febrero de 2005, 08:52:28 PM
 Por aqui otra persona de este foro estaba haciendo una libreria básica, BGL creo k se llamaba. Como SDL pero sin necesidad de usar tanto. Buscando por los foros seguro q encuentras algo
Título: Ventana E Input ¿sdl?
Publicado por: Bob en 20 de Febrero de 2005, 09:24:45 PM
 sés es el creador de BGL:

Basic Game Library

Salu2
Título: Ventana E Input ¿sdl?
Publicado por: Loover en 20 de Febrero de 2005, 09:35:10 PM
 Por lo que leo, igual he leído un post muy viejo, BGL solo rula para windows de momento. Y no he encontrado en ningún sitio documentación o información.

wxWidgets la conozco, pero me parece demasiado para lo que yo busco.

Sés, ¿como va ese librería y en que consistirá exactamente?
Título: Ventana E Input ¿sdl?
Publicado por: ethernet en 20 de Febrero de 2005, 09:47:12 PM
 yo creo que con SDL o con GLUT tienes suficiente. Quizás glut se quede un poco corta.

saludos
Título: Ventana E Input ¿sdl?
Publicado por: sés en 20 de Febrero de 2005, 11:08:53 PM
Cita de: "Loover"Sés, ¿como va ese librería y en que consistirá exactamente?
Pos mira, hoy quería subir la nueva versión, pero al final no he tenido tiempo.

BGL ha cambiado bastante. Ahora está en C++ y he corregido bastantes errores de la anterior versión... pero sigue siendo solo para Windows. A ver si pillo ya ese portátil y me pongo con la versión para Linux.

Espero subir mañana una versión en condiciones, de todas formas dejo un enlace a una demo de lo que subiré y te resumo lo que tiene:

BGL
- System: Clase principal que representa el SO (Windows, Linux...).
- VideoDriver: Pos eso, se encarga (de momento) de poner el modo de video, lock/unlock, flip...
- PixelFormat: Convierte de RBG a valor de pixel y viceversa.
- Event: Clase evento (que lee System).
- Mouse: Clase de control del ratón.
- Keyboard: Lo mismo para el teclado.

BGL Video (funciona sobre BGL)
- Image: Clase para las imágenes (las típicas "surfaces").
- Painter: Se encarga de dibujar. De momento líneas horizontales y verticales, rectángulos con o sin relleno e imágenes con soporte de inversión horizontal y/o vertical.

BGL Image
Solo tiene una clase PCX que carga imágenes PCX de 256 colores. Este módulo está de prueba y aun no he pensado cómo lo haré. Funciona sobre BGL Video, aunque me gustaría que no fuese obligatorio... ya veremos.


A ver si mañana puedo subir una versión explicando mejor cómo funciona. Supongo que a ti te vendría bien la base... cuando funcione en más sistemas ^_^


Güeno, aquí está el enlace: http://perso.wanadoo.es/sesses/bgl/bgl-demo.zip
Incluye un ejemplo que comenta lo que hace cada línea.
Aun tengo que decidir si cambio los nombres de algunas clases o métodos y algunas formas de hacer las cosas. Además hay cosas sin optimizar (como las funciones gráficas en C), pero ya habrá tiempo.
Título: Ventana E Input ¿sdl?
Publicado por: Loover en 20 de Febrero de 2005, 11:20:16 PM
 Tiene buena pinta Sés. Quizás cuando funcione para Linux y Mac...

Me parece que al final si voy a usar SDL.
Título: Ventana E Input ¿sdl?
Publicado por: zupervaca en 21 de Febrero de 2005, 02:55:48 PM
 aqui teneis lo que buscais y ademas es 100% libre

http://glfw.sourceforge.net/
Título: Ventana E Input ¿sdl?
Publicado por: Loover en 21 de Febrero de 2005, 04:15:12 PM
 He estado mirando GLFW y es genial. Pero me parece que no me va a servir. ¿Por qué? Pues porque la ventana que crea es directamente una de opengl, sin posibilidad de cambiar el render o de que cree una ventana sin inicializar ningún render.

A mi entender es un fallo gordo, ¿porque que pasa si como en mi caso me gustaría utilizar GLFW tanto para D3D como para OGL? Pues que tengo que fastidiarme.

Lástima.

Título: Ventana E Input ¿sdl?
Publicado por: StraT en 21 de Febrero de 2005, 05:28:10 PM
 env.h


#include <gl/gl.h>
#include <gl/glu.h>
#include <sdl/sdl.h>

class env

{
     
     public:
           
            env(int width, int height, int bpp, bool fullscreen);
           
};


env.cpp



#include "env.h"
#include <stdlib.h>

env::env(int width, int height, int bpp, bool fullscreen)

{
           
   SDL_Init(SDL_INIT_VIDEO);
   
   Uint32 flags = SDL_OPENGL;
   
   if(fullscreen) { flags += SDL_FULLSCREEN; }
   
   SDL_SetVideoMode(width, height, bpp, flags);
   
   glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
   
   glViewport(0, 0, width, height);
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   
   gluPerspective(90.0f, (GLfloat)width / (GLfloat)height, 0.1f, 100.0f);
   
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
   
   atexit(SDL_Quit);
   
}



La clase env tiene opciones que quizás no te interesen o quieras cambiar.

Un ejemplo:



#include "env.h"
#include <gl/gl.h>
#include <gl/glu.h>

void render()

{
   
    glColor3f(1.0f, 0.0f, 0.0f);
   
    glBegin(GL_TRIANGLES);
       glVertex3f(0.0f, 1.0f, -3.0f);
       glVertex3f(-1.0f, -1.0f, -3.0f);
       glVertex3f(1.0f, -1.0f, -3.0f);
    glEnd();
   
    glFlush();
   
}

int main(int argc, char *argv[])

{
   
   env enviroment(800, 600, 32, false);
   
   SDL_WM_SetCaption("SSE viewer", NULL);
   
   SDL_Event e;
   
   int done = 0;
   
   while (done < 1)
{
   
 if (SDL_PollEvent(&e))
 {
 
  if ( e.type == SDL_QUIT )
  {
   done++;
  }
       
 
  if ( e.type == SDL_KEYDOWN )
  {
   
   if ( e.key.keysym.sym == SDLK_ESCAPE )
   {
    done++;
   }
  }
 }
 else
 {
  render();
  SDL_GL_SwapBuffers();
 }
}
}



Muestra un triangulo rojo en pantalla.

Ale, es parte de mis prueba para un motorcillo pero te servirá. Saludos
Título: Ventana E Input ¿sdl?
Publicado por: zupervaca en 21 de Febrero de 2005, 06:04:47 PM
Cita de: "Loover"He estado mirando GLFW y es genial. Pero me parece que no me va a servir. ¿Por qué? Pues porque la ventana que crea es directamente una de opengl, sin posibilidad de cambiar el render o de que cree una ventana sin inicializar ningún render.

A mi entender es un fallo gordo, ¿porque que pasa si como en mi caso me gustaría utilizar GLFW tanto para D3D como para OGL? Pues que tengo que fastidiarme.

Lástima.
es open source puedes cambiar lo que quieres, compilarlo y no dar cuentas a nadie
Título: Ventana E Input ¿sdl?
Publicado por: raistlin en 21 de Febrero de 2005, 10:22:27 PM
 tendras que usar un sistema de GUI que trata los menus mediante clases y deja a tu responsabilidad la visualizacion grafica, hay bastantes.

http://www.cegui.org.uk/modules/news/


Yo usaria SDL para input y demas tonterias multiplataforma, porque? porque con SDL inicias solo el subsistema que necesites. Ademas puedes hacerte una version de la libreria con lo necesario y punto.

Otra alternativa es allegro, que tiene muchas mas cosas que SDL, como un sistema de GUI, y es mucho mas coñazo de compilar, dicho sea de paso.
Título: Ventana E Input ¿sdl?
Publicado por: Loover en 21 de Febrero de 2005, 11:35:54 PM
 Este sistema GUI no lo conocía. Mola.

De todos modos había pensando en diseñar yo mismo un sistema GUI. No tan complejo como este, pero lo suficiente como para poder hacer editores, menús, etc.

Me he puesto a hacer pruebas con SDL y me ha gustado bastante. Es más tocha en tamaño que GLFW pero me convence más.

Título: Ventana E Input ¿sdl?
Publicado por: zupervaca en 22 de Febrero de 2005, 12:17:36 PM
 si quieres mas ejemplos GUI puedes ver la demo basica de directx que tiene todo tipo de controles y realmente esta muy bien, si usas opengl para el render no te valdra, pero para hacerte una idea de como organizar el proyecto y como administrar controles y bla bla  :D te valdra
Título: Ventana E Input ¿sdl?
Publicado por: en 25 de Febrero de 2005, 09:01:56 PM
 y si usas glut???
Título: Ventana E Input ¿sdl?
Publicado por: Loover en 27 de Febrero de 2005, 08:21:51 PM
 Glut crea una ventana de OpenGL. Yo quiero una libreria que cree una ventana, sin inicializar ningún render.