Foros - Stratos

Stratos => Proyectos => Mensaje iniciado por: sés en 17 de Marzo de 2005, 08:59:08 PM

Título: Bgl + Opengl
Publicado por: sés en 17 de Marzo de 2005, 08:59:08 PM
 Acabo de añadir soporte para OpenGL a BGL.

Para seleccionar el controlador de video, basta con indicarlo al obtenerlo la primera vez:
getSystem()->getVideoDriver( VideoDriver::OPENGL )

Los controladores actuales son:
DEFAULT: Controlador por defecto del sistema.
SOFTWARE: Controlador sorftare por defecto del sistema.
OPENGL: OpenGL.

Aun estoy probando el nuevo controlador para OpenGL (seguramente haga una nueva versión de Escape :P).
Cuando suba la nueva versión espero sugerencias de los que tengan experiencia con Open GL. Seguramente a mí se me pasen muuuchos detalles -.- (además lo he hecho en un par de horas).

A ver si este finde la subo.
Título: Bgl + Opengl
Publicado por: TheAzazel en 17 de Marzo de 2005, 10:30:16 PM
 ¿Te refieres a que has portado tus funciones de dibujo (las que ya tenias) a OpenGL? pq si has hecho todo eso en un par de horas...eres una bestia humana!!! :)
Título: Bgl + Opengl
Publicado por: sés en 17 de Marzo de 2005, 10:34:34 PM
 XD

No, solo he añadido soporte para OpenGL. Vamos, que puedes inicializar la ventana con OpenGL y luego... el resto es cosa tuya.
Aun tengo que pensar si pasar lo que tengo a OpenGL o hacer un módulo aparte específico para OpenGL, ya que las imágenes se dibujarían de forma diferente... en fin, ya lo pensaré. Estoy muy verde en esto y todavía no sé muy bien por dónde cogerlo.
Título: Bgl + Opengl
Publicado por: TheAzazel en 17 de Marzo de 2005, 11:44:02 PM
 ¿pero quieres que BGL sea 2D,3D o para ambos?
desde luego por portabilidad(como querias portarlo a linux).....yo me olvidaria de directX y usaria OpenGL :)
por cierto, aunq estes verde...y lo q estas y vas a aprender que eh?? anda q no mola :) jajaja
a mi me pasa como a ti, voy abordando temas y aprendiendo mas y mas..... :rolleyes:  
Título: Bgl + Opengl
Publicado por: sés en 18 de Marzo de 2005, 08:47:56 AM
Cita de: "TheAzazel"¿pero quieres que BGL sea 2D,3D o para ambos?
En un principio para 2D, pero no me cuesta nada dar la posibilidad de utilizar OpenGL.
BGL es un base (más los módulos opcionales). Esa base ahora mismo da la posibilidad de inicializar el modo de video, recoger eventos, etc. vamos, lo básico.
Lo único que he añadido es que la ventana se puede inicilizar con OpenGL. O sea, que ahora, que te ahorras el código de inicialización dependiente del sistema.

Evidentemente, si trabajas con OpenGL, el lock/unlock (no sé si simularlo algún día) no hace mucho (más bien nada :P). Solo funciona el método flip().

Que cada uno haga sobre esto lo que mejor le venga. Yo solo tengo idea (de momento) de hacer cosas para 2D, ya sea haciendo que BGL Video también funcione con OpenGL o con otro módulo aparte.
Título: Bgl + Opengl
Publicado por: Sacrifai en 18 de Marzo de 2005, 09:01:41 AM
 Aunque sea un poco latazo, yo te recomendaría que hicieses dos librerías dinámicas con las definiciones de las funciones de dibujo para Opengl y Direct X. Así en caso de querer usar uno u otro solo habría que llamar a cierta función que llamase a esas DLL. Además podrías ir actualizando el render sin tener que bajarse todo.
Título: Bgl + Opengl
Publicado por: sés en 18 de Marzo de 2005, 09:19:36 AM
 Ha dicho esa... esa palabra... O_O

D...L.... *argh*
Título: Bgl + Opengl
Publicado por: Sacrifai en 18 de Marzo de 2005, 12:08:49 PM
Cita de: "sés"Ha dicho esa... esa palabra... O_O

D...L.... *argh*
¿¿??  :blink:  
Título: Bgl + Opengl
Publicado por: zupervaca en 18 de Marzo de 2005, 03:25:55 PM
 creo que el mayor problema de las dlls es que la mayoria no sabemos como hacer que exportes las clases directamente sin hacer funciones globales

saludos

pd: estaria bien si alguien sabe hacerlo que lo dijera ya que yo estuve una temporada buscando info sobre ello y la unica manera es siempre con funciones globales
Título: Bgl + Opengl
Publicado por: TheAzazel en 18 de Marzo de 2005, 03:39:14 PM
Cita de: "zupervaca"creo que el mayor problema de las dlls es que la mayoria no sabemos como hacer que exportes las clases directamente sin hacer funciones globales

saludos

pd: estaria bien si alguien sabe hacerlo que lo dijera ya que yo estuve una temporada buscando info sobre ello y la unica manera es siempre con funciones globales
Uhmm.... pueden pasar dos cosas... q no nos refiramos a lo mismo o que si, y sea lo mismo q ya he hecho... veras, mi libreria CRM32Pro...es un conjunto de clases e interfaces(son clases tambien pero autoiniciadas y unicas), estan en una DLL y exporto todo lo q quiero... echale si quieres un vistazo o pregunta lo que sea pq me he pegado bastante con ese tema.
Para mi entender, la unica pega q tienen las DLL es que si usas clases... no te queda otra que crear DLL/lib de importacion dependientes del compilador que has usado por el temita de las funciones decoradas. Yo no encontre solucion a esto y le dedique tiempo.... aunq no me creo q no exista esa posibilidad...lance la cuestion de que... directx son tambien clases (utilizan funciones decoradas por tanto) y tu puedes utilizar las dll/lib de directx con visual C, borland, mingw, etc... ahora, como lo hacen? I don't know.
Pos eso, si quieres saber algo...pregunta pregunta y si sabes como resolver ese problemon...o alguien tiene idea q lo comente please.
thanks
Título: Bgl + Opengl
Publicado por: gdl en 18 de Marzo de 2005, 04:24:35 PM
 TheAzazel: Creo que deberías echarle un vistazo a las COM y las assembly.
Título: Bgl + Opengl
Publicado por: TheAzazel en 18 de Marzo de 2005, 05:14:29 PM
Cita de: "gdl"TheAzazel: Creo que deberías echarle un vistazo a las COM y las assembly.
Podrias dar mas informacion???? gracias por adelantado
Título: Bgl + Opengl
Publicado por: _Grey en 18 de Marzo de 2005, 06:40:25 PM
 Pues aprobecho y me meto!

Si metes clases que NO funciones en una DLL, la unica manera de recuperarlas seria con funciones que creasen la clase y retornaran un puntero a esta??????
Y si tienes una clase de X (supongamos una de render o algo asi) que tanto funciona con DX como con OpenG, al ser 2 clases distintas, pero con la misma "definicion", habria que usar clases abstractas, es decir una clase con metodos virtual=0 como inteface(que seria algo asi como las COM) ??????

Saludos.
Título: Bgl + Opengl
Publicado por: zupervaca en 19 de Marzo de 2005, 12:32:41 AM
 en efecto el problema que tuve yo es que cada compilador lo hace a su manera y al final me encerre en el visual c++ con lo que cada vez que me encuentro que necesito hacer dlls me dan escalofrios  :D

otro de los problemas gordos es derivar una clase dentro de una dll, como no tienes el codigo fuente al intentar llamar a la funcion de la clase base te dara un error tocho diciendo que no encuentra es funcion, me parece que para esto no hay solucion y lo que se suele hacer es crear un metodo virtual puro, pero claro, el programador de esa dll tiene que dejarlo preparado para ello y si no, pues la hemos liado  ;)

saludos

pd: tamos liando un offtopic de lo que era el hilo :)  
Título: Bgl + Opengl
Publicado por: ethernet en 19 de Marzo de 2005, 12:44:46 AM
 En mi opinión el único problema que tienen las dll es que no vale todo.

Con respecto a C++ el único problema que me he encontrado yo ha sido a la hora de usar ciertos tipos (templatizados), lo demás, sin problemas, incluso la compatibilidad entre compiladores (al menos los más usados).

Como bien decía TheAzazel es perfectamente posible exportar clases y no es necesario a recurrir a artefactos como COM u otros si no es necesaria la compatibilidad binaria. Al hilo de esto hay un artículo de DrGUI sobre COM en la página de MS que estaba bastante bien para empezar con COM aunque quizás es algo tarde teniendo .NET ya.

saludos

Título: Bgl + Opengl
Publicado por: TheAzazel en 19 de Marzo de 2005, 12:30:32 PM
Cita de: "ethernet"Con respecto a C++ el único problema que me he encontrado yo ha sido a la hora de usar ciertos tipos (templatizados), lo demás, sin problemas, incluso la compatibilidad entre compiladores (al menos los más usados).

Ethernet, como has conseguido la compatibilidad de una DLL en C++ (con clases) entre varios compiladores?? al utilizar distintos decorated names.... lo unico que se me ocurrio fue manipular a mano el .DEF haciendo la conversion entre uno y otro... y asi obtener un .lib para cada compilador que linke con la misma DLL pero como era muxo curro... y no sabia si iba a funcionar...lo abandone.... si sabes algo de este tema.... te invito a lo q kieras  (ole)  
Título: Bgl + Opengl
Publicado por: gdl en 19 de Marzo de 2005, 02:16:43 PM
 
Cita de: "TheAzazel"Ethernet, como has conseguido la compatibilidad de una DLL en C++ (con clases) entre varios compiladores?? al utilizar distintos decorated names.... lo unico que se me ocurrio fue manipular a mano el .DEF haciendo la conversion entre uno y otro... y asi obtener un .lib para cada compilador que linke con la misma DLL pero como era muxo curro... y no sabia si iba a funcionar...lo abandone.... si sabes algo de este tema.... te invito a lo q kieras  (ole)

Quizás, añadiendo especificadores de declaración puedas forzar a que el compilador use nombres no decorados... eso sí, perdiendo algunas de las virtudes del C++ como la sobrecarga de funciones miembro. Repito: échale un vistazo al COM que, aunque no lo uses, te dará muchas ideas.
Título: Bgl + Opengl
Publicado por: Pogacha en 19 de Marzo de 2005, 04:17:14 PM
 
CitarAun tengo que pensar si pasar lo que tengo a OpenGL o hacer un módulo aparte específico para OpenGL, ya que las imágenes se dibujarían de forma diferente... en fin, ya lo pensaré. Estoy muy verde en esto y todavía no sé muy bien por dónde cogerlo.

Te recomiendo separarlo en clases VentanaDIB, VentanaDDraw y VentanaOGL, y cada una con sus virtudes y metodos por separados, yo almenos perdi unas dos semanas y no pude hacer algo que encapsule ambos caminos (software y opengl) con un rendimiento aceptable en cada una, ejemplo tamaño de los sprites, alpha blending versus color keyng.

Saludos.
Título: Bgl + Opengl
Publicado por: sés en 19 de Marzo de 2005, 06:26:02 PM
 Sí, seguramente deje BGL Video como estáy haga otro módulo equivalente para OpenGL... pero aun tengo que darle algunas vueltas.
Título: Bgl + Opengl
Publicado por: zupervaca en 19 de Marzo de 2005, 06:42:08 PM
 el problema que le veo al opengl para hacer una clase base fue lo que pregunte yo el otro dia y nadie supo contestar (o no quisieron  :) ) es que en directx puedes recuperar la textura de la memoria de video con lock pero en opengl no hay funcion para ello con lo que en opengl tendras que memorizar las texturas en la memoria de ram del ordenador y copiar trozos a mano cada vez que sea copien unas sobre otras, no se si me explico bien  (nooo)

saludos
Título: Bgl + Opengl
Publicado por: ethernet en 19 de Marzo de 2005, 10:25:37 PM
 Yo la verdad no sé otro método que el que explicas tú, quizás ithaqua sepa un método parecido. Lo que me pregunto es si DX no usa ese método para hacerlo, aunque de forma transparente. Para ver un ejemplo que puede servir de ayuda: http://cone3d.gamedev.net/cgi-bin/index.pl...age=code/shotta