Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Bgl

Iniciado por sés, 03 de Octubre de 2004, 02:40:03 PM

« anterior - próximo »

sés

 He tenido muy poco tiempo esta semana, pero este finde he sacado un ratito (aprovechando que estaba consciente :P).

Aquí está una primera demo: BGL Demo
Es una demo muy tonta. Se limita a dibujar puntitos blancos por donde pasa el cursor.

Lo que funciona, creo, es esto:
/* WINDOW */
bgl_window bgl_createwindow( int width, int height );


/* VIDEO */
int bgl_setvideomode( int width, int height, int bpp, bgl_bool fullscreen );
void bgl_getvideoinfo( bgl_videoinfo *videoinfo );

void *bgl_lockvideobuffer();
void bgl_unlockvideobuffer();
void bgl_flipvideobuffer();


/* TIMER */
bgl_dword bgl_gettimerfreqency();
bgl_dword bgl_gettimer();


/* EVENTS */
bgl_bool bgl_readevent( bgl_event *event );


Limitaciones:
- Solo para Windows (probado en Windows 2000)
- Solo en ventana, en pantalla completa aun no va bien.
- Las funciones de timer no están probadas ^_^
- Solo hay estos eventos: BGL_EVENT_MOUSEMOVE, BGL_EVENT_MOUSEDOWN/UP (botón izquierdo), BGL_EVENT_KEYDOWN/UP y BGL_EVENT_APPCLOSE
- La librería (bgl.a) está creada con DevC++ 4.9.9.0


Si alguien no sabe qué es, que pase por Librería Básica Para Programar Videojuegos
Soy indeciso... ¿o no?

nsL

 Lo he probado y en win98 me va perfecto  (ole)

Notas:
- Si maximizo se queda en negro y no se ve lo que habia dibujado ni puedo dibujar (no se si te referias a eso en pantalla completa)
- Veo que te pasa como a mi cuando intente hacer un amago de paint con delphi, si mueves rapido el cursor no quedan contiguos los puntos, aunq eso sera lo normal digo yo. Si alguien sabe como se hace pa que salgan como si fuese un lapiz q lo diga, por curiosidad :P

wen trabajo  :lol:  
Yo no muero hasta la muerte -

Sacrifai

Cita de: "nsL"- Veo que te pasa como a mi cuando intente hacer un amago de paint con delphi, si mueves rapido el cursor no quedan contiguos los puntos, aunq eso sera lo normal digo yo. Si alguien sabe como se hace pa que salgan como si fuese un lapiz q lo diga, por curiosidad :P
Exactamente no se, pero ¿que tal crear una linea en cada frame de un punto a otro?

nsL

 pero es que entonces se vera demasiado la rectas...
tu prueba por ejemplo en la demo de sés a pasar el puntero a toda ostia, se te crean a lo mejor 3 puntos o incluso menos, si uno con rectas imaginatelo :P
en cambio, por muy a toda ostia que lo pases en el paint, por ejemplo, te queda como si lo hicieses con un lapiz en un folio...
Yo creo que lo suyo seria que pinte 1 punto en cada pixel que avance el puntero
aunq weno, igual alguien viene y nos comenta como va el tema  :lol:
Yo no muero hasta la muerte -

sés

 Bueno... es una demo alaputacarrera, así que tiene "fallos". Lo pongo entre comillas porque la mayoría son conocidos, como lo de maximizar. Aun no hago nada al cambiar de tamaño la ventana... ni en el evento de redibujar... en fin, que está muy coja todavía la cosa. Pero con lo que hay, el resto (espero) es poca cosa.

A ver si añado lo que falta, limpio el código y lo publico. Aun no sé si sacarlo bajo alguna licencia o bajo la licencia "hazloquequierasconello", total... es lo que la gente acaba haciendo, ¿no? Además, no pienso sacar ni un duro por esto... ni aunque quisiera (ses)

P.D.: Sobre lo de dibujar líneas, puedes hacer varias cosas para lo que dices:
- Líneas (como ya te han dicho).
- Splines (o similar).

Cuando he necesitado hacerlo he usado líneas. Queda bien (si quieres mover el puntero a 100Km/h... lo siento, macho :P, para casos normales funciona)
Soy indeciso... ¿o no?

sés

 Ya tengo una primera versión de lo que será BGL: bgl_preview.zip

He corregido algunos errores de la anterior demo y he implementado algunas cosas que faltaban. Aunque aun me queda trabajo, esta versión es casi definitiva en cuanto a funcionamiento. Salvo algún parámetro de un par de funciones y que añadiré alguna cosa más, creo que cambiaré poco.

No está bajo ninguna licencia ni nada parecido, y no sé si lo haré. Seguramente ponga mi propia "licencia" que prácticamente permita hacer lo que se quiera con el código. Si alguien tiene alguna idea mejor...

Como la demoa anterior, está con Dev-C++, pero como esta vez está con el código fuente se podrá probar con lo que sea.
Hay varios directorios:
- demo: La demo anterior con algunas mejoras. Esta vez dibuja al pulsar los botones del ratón. Cada botón es un color (R, G, B ) y se pueden mezclar. Se puede salir con ESCAPE.
- dxerr: Es un programa tonto que obtiene el mensaje de error que corresponde a un código de DirectDraw. Esto antes estaba el la librería, por eso ocupaba bastante más ^_^
- include y lib: Pues eso.
- src: El código fuente. De momento solo para Windows.
Soy indeciso... ¿o no?

nsL

 Ahora estoy en la uni y no puedo probarlo, este viernes o sabado lo miro y te comento :P
si puedo lo miro antes,pero no prometo na
Yo no muero hasta la muerte -

sés

 Es el mejor momento para cualquier sugerencia, porque falta poco para que dé las funciones que hay como definitivas (necesito empezar con BGL Video).

Una apunte, aun no tengo instalado Linux (estoy esperando a comprarme un router, tengo modem USB :() y no he podido trastear con el.
En Linux programé hace bastante tiempo alguna aplicación en pantalla completa, pero de como hacerlo en modo ventana... excepto alguna aplicación tonta con KDEvelop, de gráficos ni idea.

Si alguien ve algún problema para portar BGL a Linux tal y cómo está planteada, que me lo diga, plis :D
Soy indeciso... ¿o no?

nsL

 Me va perfecto , y ojeando el codigo y tal veo que has hecho un wen trabajo :P
Nada a destacar,porq todo fue bien, colores en distintos botones del raton y demas...

Despues de ejecutar el dxerr el contenido de dxerr.layout es este:

Citar
[Editors]
Focused=0
Order=0

[Editor_0]
Open=1
Top=1
CursorCol=20
CursorRow=130
TopLine=1
LeftChar=1


no se si se relleno despues de ejecutarlo o ke, pero weno, te lo pongo por si acaso :P
en la ventana de dxerr sale una frase que no alcanzo a leer ya que se cierra muy rapido.

En fin, un buen trabajo, a seguir asi  (ole)  
Yo no muero hasta la muerte -

sés

 xD

dxerr es un simple programita de consola que muestra un el mensaje que corresponde a un código de error de DirectDraw.

Está pensado para ejecutarlo desde una consola, por eso no ves nada.

El .layout y demás son cosas del Dev-C++

Me alegra que te guste, a ver si tengo un ratito y dejo las cosas más definitivas.
Soy indeciso... ¿o no?






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.