Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Cómo esperar el retrazo vertical sin DX ?

Iniciado por fiero, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

fiero

                                Pues eso, si sabeis como se puede esperar el retrazo vertical, para sincronizar el refresco de la pantalla, con las funciones de la GDI o MFC.

He implementado las superficies con MFC en vez de con DX y al ejecutar CDC:BitBlt(...) me gustaria esperar el retrazo para que no se vean parpadeos (aunque me bajen los FPS).

un saludo                                
www.videopanoramas.com Videopanoramas 3D player

Emotion

                                Hola fiero, creo que es esta funcion la que estas buscando:

void vsync(void)
{
__asm    {
      mov dx,0x3da

      step1:
      in al,dx
      and al,8
      jz step1

      step2:
      in aldx
      and al,8
      jnz step2
   }
}

Espero que te sirva... Un saludo :sonriendo:
                               
G3: Get the Power!

Gunder

                                Bravo Emotion!!!!,

Microsoft lleva, con sus windows 3.0 o superior, mas de 10 años intentando proteger los accesos al hardare del usuario de una forma directa. Incluso bajo demanda, creo unas librerias llamadas DirectX para que los programadores de juegos pudieran acceder a todas estas funciones.

Pues bien, en el año 2002 llega emotion y accede a la trajeta de video con un inp desde windows.

Chapeau!!!!!!!!

                               
riticar, critica hasta el mas tonto.

Emotion

                                Hombre Gunder! Juas juas juas

No oye ya en serio, lo primero es que fiero ha dicho lo del retrazo vertical SIN DirectX y te voy a decir una cosa... yo SI que puedo hacerlo... joder tio, que es un simple input, y windows SI que te deja acceder al hardware mientras no intentes, por ejemplo, ejecutar interrupciones, que eso no lo he podido hacer ni suplicando :sonriendo:

Pero coño, no te me vayas a rebotar ahora, que tampoco ha sido una barbaridad lo que he dicho... funciona, coño si la rutina la he sacado de mi viejo motor, del cual no conservo el codigo, pero si algunos fragmentos, y es lo que usaba. Actualmente uso Win98 y cuando hice el motor seguia usando Win98 y no me dio problemas... es que tu no puedes?? :sonriendo:
                               
G3: Get the Power!

fiero

                                Hola,
pues la verdad es que en un acto de desesperación ya habia probado ese código, sacado de mis viejos programas de DOS, pero el w2000 no deja ejecutar "in"

La verdad es que en w98 puede que si funcione (por lo de que es un hibrido 16-32), yo no he probado, pero claro, si no va en todos los sistemas de 32bits no sirve.

Yo me refería a alguna función de windows, que haberla seguro que hayla.....

un saludo                                
www.videopanoramas.com Videopanoramas 3D player

Emotion

                                Ah, vaya... en ese caso creeme que lo siento... la verdad es que desenpolve mis viejos codigos (en este caso el del cutre motor 2D que hice) y pense que curraria, pero gracias por el apunte...

Dios mio, no me digas que ya no se usa el MS-DOS?? imperdonable... :riendo:

Un Saludo
                               
G3: Get the Power!

Juan Mellado

                                Buenas, pasaros por esta página:

http://www.compuphase.com/vretrace.htm

Básicamente lo que dice (código fuente incluido) es que se ha de utilizar el ASM de toda la vida pero encapsulado en un driver.

Saludos.                                

Ithaqua

                                Dejad a emotion, no véis que es de la 'vieja escuela'?

:->

... (...)

..

....

:->

                               
thaqua^Stravaganza
http://ithaqua.stravaganza.org

NeLo

                                Alguien podria volver a postear el mensaje de Ithaqua pero desencriptado? (Por ejemplo  tu, Emotion, que sabes asm)

Perdonad mi ignoracia, pero es que no consigo entenderlo.

xDDD
                               
Drowning deep in my sea of loathing

fiero

                                Gracias Juan
por lo menos dejo de buscar la función mágica que no existe en las GDI.

Según la página, si se mete el código posteado por Emotion en un archivo .SYS, y luego se carga el archivo, sí se puede detectar el retrazo. Voy a hacer una dll con una funcion así para probarlo, es que el programa de la página web me da un error de "version incorrecta" o algo así...

Sólo una pregunta, yo nunca he hecho un archivo .SYS, ¿es una .DLL renombrada o es algo más?

un saludo                                
www.videopanoramas.com Videopanoramas 3D player

Juan Mellado

                                Un SYS es distinto de una DLL, es un driver. Tiene su propia estructura. Fijate en los fuentes. Tiene un DriverEntry (parecido a DLLEntryPoint) en el cual se da a conocer y expone sus interfases (funciones a las que llama Windows para cargarlo, descargarlo, ejecutar una función propia del driver, ...).

Creo que necesitarás bajarte el DDK para hacer un driver nuevo.

Con respecto al error, recordarte que en NT/2000 debes instalar, registrar e iniciar el driver antes de ejecutar el programa de ejemplo. No tengo NT/2000 así que no puedo postear un paso a paso, en ME funciona perfecto con el VXD.

Saludos                                

fiero

                                ok, era eso, hay que tenerlo "starting..."

voy a ver si la lio.... :riendo:

gracias, un saludo                                
www.videopanoramas.com Videopanoramas 3D player






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.