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
uso d3d 8.1
¿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
mejor k me lo mandes x k soy d torpe...
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!!
no me va.
¿el CanCalibrateGamma hay que hacerlo por fuerza?
Haddd usa las etiquetad de CODE para que te quere el codigo identado
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:
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.
CitarHaddd usa las etiquetad de CODE para que te quere el codigo identado
no he entendido nada.
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!
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
un quad??
un plano?
podria servir tambien un sprite del tamaño de la pantalla?
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.
al final he hecho como tu dijiste, loover. y me ha salido bien, musshas asias! :)
De nada! :D