Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Colisiones De Sprites Al Pixel Por Hardware

Iniciado por Haddd, 01 de Febrero de 2004, 07:52:55 PM

« anterior - próximo »

Loover

 
CitarLo que en realidad debe hacer el driver es utilizar el backbuffer del escritorio, que SIEMPRE es a pantalla completa, y utiliza un ViewPort del tamaño de la ventana.

¿Con eso quieres decir que si tengo el escritorio a 1024x768 mi backbuffer en modo ventana tendrá esa resolución?
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

Haddd

 Si haces

   m_Video->D3D()->GetAdapterDisplayMode(m_Adapter, &m_Mode);

Si estás en modo escritorio, las variables m_Mode.Width,m_Mode.Height te devuelven el tamaño del escritorio

Si estás en full screen, te devuelve el tamaño del full screen


Loover

 Pero pichón, eso no es el tamaño del frame buffer. Eso, como tu dices, es el tamaño del escritorio (y claro, en modo pantalla completa la aplicación lo cambia).

El tamaño del frame buffer se halla con esto:

D3DSURFACE_DESC   m_d3dsdBackBuffer;
LPDIRECT3DSURFACE9 pBackBuffer;
mInfo.mDevice->GetBackBuffer( 0, 0, D3DBACKBUFFER_TYPE_MONO, &pBackBuffer );
pBackBuffer->GetDesc ( &m_d3dsdBackBuffer );
pBackBuffer->Release();
Debug->DataInt (m_d3dsdBackBuffer.Width, 1);
Debug->DataInt (m_d3dsdBackBuffer.Height, 1);


Y si miras ahí verás que tienes un frame buffer de 740x560 ;)

Prueba a crear la ventana 60 pixeles mas ancha y 40 mas alta y entonces el frame buffer pasará a 800x600
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!

BeRSeRKeR

 ¿Pero qué más da que el frame buffer tenga un tamaño "estándar" que no?. En modo ventana es indiferente.

Con respecto al frame rate, la verdad es que no se aprecia diferencia alguna entre tener las colisiones activadas y no tenerlas.

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

BeRSeRKeR

Cita de: "BeRSeRKeR"¿Pero qué más da que el frame buffer tenga un tamaño "estándar" que no?. En modo ventana es indiferente.
Ok, he releído el post y ya sé a cuento de qué venia esto...Olvidad lo que he dicho :D

Saludos.
¡Si te buscan en nombre de la ley, huye en nombre de la libertad!!

Loover

 
Citar¿Pero qué más da que el frame buffer tenga un tamaño "estándar" que no?. En modo ventana es indiferente.

Lo he dicho por dos motivos (que ya lo puse en el otro post) uno aduciendo que ese podía ser la causa por la que el debug de Hadd decía que no funcionaría en modo pantalla completa con la tarjeta de [EXT].
Y otro por el "blurring" que sufren las imágenes y otra serie de "artifacts". Puedo ponerte un ejemplo, con una imagen, una sobre un framebuffer de tamaño standard y otra sobre uno de tamaño arbitrario. En la segunda la imagen se verá ligeramente difuminada  con ciertos errores debido a que la escala (aunque en ambas hagas el ajuste -0.5f, -0-5f para el ajuste del texel).
Eso solo se nota en aplicaciones 2d.
Si lo piensas es lógico. Es normal que si tienes un fondo, por ejemplo para un juego, de 800x600, el framebuffer deba tener ese tamaño para que este fondo no se reescale y salga totalmente nítido como la imagen orinigal ;)

PD: Hadd, ¿entonces vas a poner un artículo acerca del método y tal? Que sea pronto :D

EDITADO: Ups, contesté antes de ver lo de "olvidad lo que he dicho..."
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!






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.