• Domingo 17 de Noviembre de 2024, 15:50

Autor Tema:  Cambio De Pantalla  (Leído 1842 veces)

LeGatoRojo

  • Miembro HIPER activo
  • ****
  • Mensajes: 552
  • Nacionalidad: mx
    • Ver Perfil
    • LeGatoRojo
Cambio De Pantalla
« en: Martes 14 de Diciembre de 2004, 08:03 »
0
Hola a todos, saben estoy haciendo una juego en c++ graficos en 256, y uso el retrazco de la pantalla para que no parpadee tanto, pero aun tengo un problema, por que entre mas figuras borro y dibujo, las que se encuentran en la parte superior de la patalla ya no se ven o se ven mutiladas, no alcanzo la velocidad que quisiera asi que no se si alguien podria darme un ejemplo de como hacer un funcion putpixel que sea mas rapida que la mia, que esta hecha en c++ y otra en asm.
Un día desperte y en lugar de dientes tenía colmillos, en lugar de manos, tenía garras; pero lo más impactante fue el color escarlata de mi pelaje.

Amilius

  • Miembro HIPER activo
  • ****
  • Mensajes: 665
    • Ver Perfil
Re: Cambio De Pantalla
« Respuesta #1 en: Martes 14 de Diciembre de 2004, 14:14 »
0
Das muy poca o casi nada de información de contexto (compilador, s.o., máquina en la que estas realizando tus pruebas, recursos de la tarjeta de video que estás usando, etc)...

Parece que lo estás haciendo para DOS en un compilador de 16 bits. (Por lo lento) Si es así es mejor que trabajes todo en memoria y cuando tengas la escena terminada recien la copias EN BLOQUE a la tarjeta de video, a una "página de memoria" la tarjeta de video que no esté activa. Luego haces el "flip" activando la "página de memoria" donde está tu escena y desactivando la anterior para colocar alli la siguiente escena. (Si es que te permite más de una página :rolleyes: )

Si utilizas directX y tu juego no utiliza aceleración direct3D y quieres que corra a buena velocida en cualquier máquina por muy pobres que sean los recursos de su tarjeta de video: Lo mismo, todo en memoria y al final copias a la superficie de renderizado, luego el flip: en modo cooperativo copiando a la superficie principal y en modo exclusivo realizando el flip. Todas tus superficies, menos la principal, en memoria de sistema.  Si dependes de las bondades de la tarjeta gráfica, pues todas las superficies más usadas en memoria de la tarjeta de video (típico cuando utilizas direct3d=> más memoria en video => menos tráfico de y hacia la memoria RAM => mejor rendimiento).

P.D.

La función "putpixel":  :blink:  A menos que la utilices MUY pocas veces no es buena idea. De todos modos implementando un putpixel primero en ram y luego copiando EN BLOQUE el resultado completo a tarjeta de video es mucho más rápido que poner el pixel directamente en tarjeta de video.

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Cambio De Pantalla
« Respuesta #2 en: Miércoles 15 de Diciembre de 2004, 02:34 »
0
bueno lo mismo que dice amilus (no se ni para que lo digo ) :lightsabre:


Simplemente dibujar en la pantalla es muy lento,

lo que yo hago en ese caso es lo siguiente

1 - crear un buffer en memoria para no dibujar directo a pantalla sino en el buffer
2 - cuando ya dibuje todo lo que tenia que dibujar en el buffer paso todo en bloque a la memoria de video
3- justo antes de copiar en bloque espero el barrido vertical.


Com habras de suponer putpixel no te servira de mucho, salvo que el putpixel que usas te permita seleccionar en donde dibujar  :huh:
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

LeGatoRojo

  • Miembro HIPER activo
  • ****
  • Mensajes: 552
  • Nacionalidad: mx
    • Ver Perfil
    • LeGatoRojo
Re: Cambio De Pantalla
« Respuesta #3 en: Miércoles 22 de Diciembre de 2004, 05:36 »
0
Ok gracias, auqnue por fin he avanzado mucho en graficos y eso ya esta soucionado, thanks.  :hola:
Un día desperte y en lugar de dientes tenía colmillos, en lugar de manos, tenía garras; pero lo más impactante fue el color escarlata de mi pelaje.