Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: boubou en 12 de Diciembre de 2003, 12:40:44 PM

Título: Ajustar El Gamma
Publicado por: boubou en 12 de Diciembre de 2003, 12:40:44 PM
 he probao con el SetGammaRamp y na d na...
a mi me da k habra k hacer un SetRenderState de esos para k s pueda ajustar el gamma...
enga a ver si podeis ayudarme plzz
a2
Título: Ajustar El Gamma
Publicado por: boubou en 12 de Diciembre de 2003, 12:41:10 PM
 uso d3d 8.1
Título: Ajustar El Gamma
Publicado por: Haddd en 12 de Diciembre de 2003, 01:44:40 PM
 ¿has mirado si tu tarjeta soporta GammaRamp?

Yo lo utilizo y me funciona bien. Si sigues teniendo problemas te mandaré el código cuando llegue a casa
Título: Ajustar El Gamma
Publicado por: boubou en 12 de Diciembre de 2003, 07:30:33 PM
 mejor k me lo mandes x k soy d torpe...
Título: Ajustar El Gamma
Publicado por: Haddd en 12 de Diciembre de 2003, 08:47:41 PM
 Para saber si soporta gama:

   if(m_Caps.Caps2 & D3DCAPS2_FULLSCREENGAMMA) {
      Haddd.Debug(_T("FullScreenGamma OK"));
      m_Video->Device()->GetGammaRamp(0,&m_GammaRampOriginal);
      m_SoportaGamma=true;
   }
   else
      Haddd.Debug(_T("FullScreenGamma NO DISPONIBLE"));

   if(m_Caps.Caps2 & D3DCAPS2_CANCALIBRATEGAMMA)
      Haddd.Debug(_T("CanCalibrateGamma OK"));
   else
      Haddd.Debug(_T("CanCalibrateGamma NO DISPONIBLE"));


void CXVideo::EstablecerGamma(long ir,long ig,long ib)
{ long c;long v;D3DGAMMARAMP m;

   if(!m_Informacion.m_SoportaGamma) return;
   
   for(c=0;c<256;c++) {
      if(ir==0) m.red[c]=(WORD)(c*256);
      else {
         v=ir+(c*256);
         if(v>65535) v=65535;
         else if(v<0) v=0;
         m.red[c]=(WORD)v;
      }
      if(ig==0) m.green[c]=(WORD)(c*256);
      else {
         v=ig+(c*256);
         if(v>65535) v=65535;
         else if(v<0) v=0;
         m.green[c]=(WORD)v;
      }
      if(ib==0) m.blue[c]=(WORD)(c*256);
      else {
         v=ib+(c*256);
         if(v>65535) v=65535;
         else if(v<0) v=0;
         m.blue[c]=(WORD)v;
      }
   }

   Device()->SetGammaRamp(0,D3DSGR_NO_CALIBRATION,&m);
}


Por cierto, acabo de recordar que el Gamma sólo funciona en Full Screen en la mayoría de tarjetas!!
Título: Ajustar El Gamma
Publicado por: boubou en 05 de Enero de 2004, 04:34:19 PM
 no me va.
¿el CanCalibrateGamma hay que hacerlo por fuerza?
Título: Ajustar El Gamma
Publicado por: ethernet en 05 de Enero de 2004, 05:45:25 PM
 Haddd usa las etiquetad de CODE para que te quere el codigo identado
Título: Ajustar El Gamma
Publicado por: Mars Attacks en 05 de Enero de 2004, 07:19:06 PM
 Si no es mucha molestia, ¿para qué quieres la corrección de gamma? Me parece interesante en aplicaciones fotográficas y tal, pero en juegos...  :huh:  
Título: Ajustar El Gamma
Publicado por: boubou en 05 de Enero de 2004, 09:09:16 PM
 
CitarSi no es mucha molestia, ¿para qué quieres la corrección de gamma? Me parece interesante en aplicaciones fotográficas y tal, pero en juegos...

para hacer fades.
Título: Ajustar El Gamma
Publicado por: boubou en 05 de Enero de 2004, 09:10:30 PM
 
CitarHaddd usa las etiquetad de CODE para que te quere el codigo identado

no he entendido nada.
Título: Ajustar El Gamma
Publicado por: Loover en 05 de Enero de 2004, 09:45:48 PM
 Para los fades te recomiendo mejor o un fade por objeto a color si quieres fades individuales usando el texture factor. O un fade a pantalla completa usando un quad del color deseado que ocupe toda la pantalla y blendearlo progresivamente con la escena.
Lo malo de usar los gamma es que no rulan bien en modo ventana y además no todas las tarjetas lo soportan.

Un saludo!
Título: Ajustar El Gamma
Publicado por: vicho en 06 de Enero de 2004, 08:04:31 AM
 mars por ejemplo yo para los mapas de Quake3 necesito cambiarles la gamma, puedo hacerlo por software pero seria bueno tener tambien la opcion de cambiarla por la tarjeta de video, en todo caso es raro por que yo tampoco podia cambiarla usando SDL, raro y eso que en linux me funcionaba a la maravilla
Título: Ajustar El Gamma
Publicado por: boubou en 06 de Enero de 2004, 11:30:47 AM
 un quad??
un plano?

podria servir tambien un sprite del tamaño de la pantalla?
Título: Ajustar El Gamma
Publicado por: Loover en 06 de Enero de 2004, 04:22:33 PM
 A ver, me refiero a que cambies a proyección ortogonal y dibujes un quad (un par de triángulos formando un rectángulo) ocupando toda la pantalla con el color que tu prefieras para el fade. Tienes que dibujarlo por encima de los objetos que quieras q sufran el fade (puede que prefieras preservar por ejemplo los marcadores o menú del juego y solo aplicarlo a la escena). Entonces activas el alpha blending y vas cambiando progresivamente el valor alpha hasta que solo se vea el quad con su color ocultando totalmente la escena. Utiliza tiempo del reloj real para hace el fade.
Algo simplísimo vamos.

La otra opción es usar fade to color para cada uno de los objetos de la escena. Mirate el post que abrí preguntando sobre si había que lockear el vb para cambiar el color/alpha.

Un saludo!

PD: En mi opinión los controles de gamma mejor no tocarlos. Por lo que ya dije en el otro post.
Título: Ajustar El Gamma
Publicado por: boubou en 20 de Enero de 2004, 11:04:42 AM
 al final he hecho como tu dijiste, loover. y me ha salido bien, musshas asias! :)
Título: Ajustar El Gamma
Publicado por: Loover en 20 de Enero de 2004, 11:11:55 AM
 De nada!  :D