• Domingo 17 de Noviembre de 2024, 12:22

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Ruben3d

Páginas: 1 [2]
26
Programación de Videojuegos / Niebla En Doom 3
« en: Sábado 28 de Febrero de 2004, 17:18 »
Hola a todos.

Estaba navegando por internet, viendo información sobre Doom 3, cuando vi un screenshot del juego que me llamó increiblemente la atención.

Sorprendentemente no fue uno lleno de efectos y explosiones, ni geometría increiblemente detallada, ni cosas de este estilo. Fue uno relativamente simple, con unos monstruillos que parecen cabezas con patas, y niebla.

Hasta aqui todo normal, pero lo sorprendente es que combinaba stencil shadow volumes con niebla! :blink:

El algoritmo que genera las sombras obtiene como salida, por decirlo de manera simple, una máscara que indica qué partes de la imagen en pantalla están a la sombra de una luz (el lugar donde esto se guarda es el stencil buffer). Teniendo esto, lo que se hace es oscurecer en la imagen final las partes que el stencil buffer indica que están a la sombra. De esta manera no se sabe a qué distancia están las sombras en el espacio, pero sí se sabe qué parte de la imagen final está a la sombra. Por ello, en todas las demos que combinan este tipo de sombras con niebla se puede ver cómo cuando la sombra se aleja dentro de la niebla no se ve afectada por ésta y permanece completamente negra (se puede ver esto en el ejemplo ShadowVolume para Direct3D, en el SDK de DirectX).

Sin embargo, en el screenshot que vi esto no sucede. Hay niebla y las sombras que hay lejos se ven afectadas por ésta. Así, llega mi pregunta:

¿Cómo hace Doom 3 para combinar stencil shadow volumes y niebla?

Lo único que se me ocurre es hacer una última pasada, después de pintar las sombras, generando a mano la niebla a partir de los valores que haya en el z-buffer, pero me da la sensación de que esto será muy ineficiente. ¿Hay algún método que no conozca? ¿Se trata de alguna extensión de las nuevas tarjetas? ¿Se optimizaría con un FragmentProgram?

Uff, sobredosis de preguntas ;) . Espero que alguien me pueda responder a esto. :lol:

Un saludo.

Ruben3d

PD: Adjunto la imagen, claro.
No me deja usar el tag IMG  :angry:
http://common.ziffdavisinternet.com/util_g...&i=50697,00.jpg
y el link a la web donde está:
http://www.computergaming.com/slideshow_vi...00&po=36,00.asp

27
Programación de Videojuegos / ¿qué Librería Gráfica Utilizar?
« en: Martes 3 de Febrero de 2004, 19:24 »
Hola a todos.

Me gustaría saber qué librería gráfica debería utilizar bajo Windows para poder pintar píxeles de la forma más eficiente.

Me explicaré un poco más. Me gustaría que la librería me permitiera crear un primary buffer y un backbuffer, en el que pintar. Y permitirme intercambiar los contenidos para evitar el parpadeo.

Además, me gustaría que soportara al menos 16 bits de color y un direccionamiento lineal para el backbuffer, lo que me permitiría pintar los píxeles más o menos así:

Código: Text
  1.  
  2. PintarPixel(x,y, color)
  3. {
  4.     backbuffer[x+y*anchuraPantalla] = color;   // backbuffer es un puntero al backbuffer
  5. }
  6.  
  7.  
  8.  

He estado buscando por internet y algunas de las librerías que creo que permiten esto son (corregidme si me equivoco):
  • DirectDraw</li>
  • OpenGL (API 3D, he hecho pruebas y es muy ineficiente para esto, lo descarto)</li>
  • SDL</li>
  • Allegro </li>
  • GDI (¿permite backbuffer?)</li>
¿Alguien me podría decir con cuál de estas librerías se podría implementar esto de la manera más sencilla y eficiente posible?

Muchas gracias.

Ruben3d

28
Visual C++ / Forzar Compilación De Un Fichero
« en: Martes 20 de Enero de 2004, 19:12 »
Hola.

Tengo un fichero fuente en el que lo único que guardo es la fecha y la hora de la compilación usando __DATE__ y __TIME__. Como cada vez que compilo el proyecto no modifico este fichero, permanece sin recompilar, por lo que cada vez que se genera la aplicación aparece la fecha y hora de la primera vez que lo compilé. ¿Hay alguna manera de forzar la compilación de este fichero sin tener que borrar el código objeto manualmente antes?

Muchas gracias.

Ruben3d

29
C/C++ / Eliminar Un Warning
« en: Lunes 1 de Diciembre de 2003, 20:02 »
Hola a todos.

He hecho una clase de tipo singleton y, al compilar el archivo, obtengo el siguiente warning:
Código: Text
  1. cscreen.h:26: aviso: `class Screen' solamente define constructores privados y no tiene friends
  2.  
Con Visual Studio puedo quitar los warnings con la directiva #pragma warning( disable : X ) pero, ¿cómo puedo hacerlo coon g++?

Muchas gracias

30
Programación de Videojuegos / Texturizar Polígonos
« en: Sábado 29 de Noviembre de 2003, 13:38 »
Hola a todos.

Tengo un programa que representa objetos formados por triángulos, pero son de colores sólidos cuya intensidad varía según la posición de la luz. Lo que hago para pintarlos es proyectar las coordenadas xyz de los vértices a coordenadas xy de la pantalla y rellenar el triángulo 2d resultante con el tono adecuado. Desde esta situación, ¿cómo podría texturizar los triángulos? No quiero el código, sino más el concepto, qué es lo que hay que hacer. Me gustaría que alguien me explicara el método o me diera un link a donde estuviera explicado de manera más o menos clara, de manera genérica (sin centrarse en un lenguaje de programación en particular).

Muchas gracias a todos.

31
C/C++ / Posición y color de texto en linux
« en: Sábado 15 de Noviembre de 2003, 14:45 »
Hola.

Me gustaría saber si existe en linux alguna función que permita cambiar la posición del cursor y el color del texto, como hacen SetConsoleCursorPosition y SetConsoleTextAttribute en Windows.

Muchas gracias.

32
C/C++ / Re: Saber el contenido de un directorio
« en: Miércoles 12 de Noviembre de 2003, 20:53 »
Hola a todos.

Estoy acostumbrado a programar en Linux y al pasar a hacerlo en Windows me encontré con que no estaban las funciones que conocía para averiguar las entradas de un directorio (opendir, telldir y demás). Así, me puse a investigar en la documentación y lo logré hacer usando la clase System::IO::Directory del .NET Framework. También conseguí hacerlo usando la función system con un dir /B > fichero.txt.

Sin embargo, ninguna de las dos opciones me parece la adecuada. Ya que con la primera estoy usando una clase específica de Microsoft, y con la segunda me da la impresión de que es un poco chapuza (ya que tengo que estar leyendo un archivo con el resultado).

Así pues, me gustaría poder saber el contenido de un directorio usando sólo las funciones o clases del ANSI C ó C++. ¿Alguien me podría ayudar?

Muchas gracias por adelantado.

Páginas: 1 [2]