PDA

View Full Version : Problemas con Dot3_RGBA



DraKKaR
08-07-2003, 05:40 AM
Veamos si es verdad que hay mas gente que hable español que ingles, ahi va mi problema.

Holas, estoy intentando hacer iluminacion por pixel usando mapas de atenuacion y dot3., de hecho ya lo he conseguido, pero he encontrado un problema a la hora de mejorarlo.

Ire al grano: a ver si sabeis los opengleros porque esto no funciona.

Primero de todo limpio los valores (r,g,b,a) del frame buffer por unos conocidos:
CODE

glColor4f(0,0,0,1);
glDisable(GL_TEXTURE_2D);
glDisable(GL_LIGHTING);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisable(GL_BLEND);
RenderRawTris(par,vdat);
glEnable(GL_BLEND);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_TEXTURE_2D);



Inmediatamente despues de eso:

CODE

glEnableClientState(GL_COLOR_ARRAY);
glColorPointer(3, GL_FLOAT, 0, vdatogl->dot3_color);

glTexCoordPointer(3,GL_FLOAT,0,vdatogl->GetTexCoordArray(par->texcoord_source0));
glBindTexture(GL_TEXTURE_2D,normalmap->GetID());

glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_CO MBINE_ARB);
glTexEnvi(GL_TEXTURE_ENV,GL_SOURCE0_RGB_ARB,GL_PRI MARY_COLOR_ARB);
glTexEnvi(GL_TEXTURE_ENV,GL_SOURCE1_RGB_ARB,GL_TEX TURE);
glTexEnvi(GL_TEXTURE_ENV,GL_OPERAND0_RGB_ARB,GL_SR C_COLOR);
glTexEnvi(GL_TEXTURE_ENV,GL_OPERAND1_RGB_ARB,GL_SR C_COLOR);
glTexEnvi(GL_TEXTURE_ENV,GL_COMBINE_RGB_ARB,GL_DOT 3_RGBA_ARB);

glColorMask(GL_FALSE,GL_FALSE,GL_FALSE,GL_TRUE);
glBlendFunc(GL_ONE,GL_ZERO);
RenderRawTris(par,vdatogl);

glDisableClientState(GL_COLOR_ARRAY);
glColorMask(GL_TRUE,GL_TRUE,GL_TRUE,GL_TRUE);
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MO DULATE);



La idea del codigo anterior es que calcule el dot3 entre el color interpolado por vertice y el mapa de normales (esto lo hace bien). El problema esta en que quiero que el resultado tambien me lo meta en el canal alpha, poruqe quiero hacer operaciones de blending sobre este. Se supone que GL_DOT3_RGBA mete el resultado tambien en el canal alpha. Ademas, con el colormask deshabilito el color buffer para que solo se actualice el alpha buffer. Y la funcion de blend anterior haria que este canal alpha calculado con el dot3 se copiara sin mas en el frame buffer. Depues de pintar, vuelvo a habilitar el colorbuffer para hacer mas renders normal.

EL problema es: creo que despues de hacer eso no hay nada en el alpha buffer porque al ahcer esto (inmediatamente despues), no funciona:
CODE

glBlendFunc(GL_ZERO,GL_SRC_ALPHA);
RenderRawTris(par,vdat); // renderizar la misma geometria sin mas



Tras la ejecucion del primer codigo tendria ke tener por cada pixel del frame buffer (0,0,0,dot3). Asi que al aplicar la nueva funcion de blending, deberia multiplicar el alpha calculado anteriormente por el nuevo color de destino. Con lo que el resultado final deberia ser la geometria base atenuada mas o menos en cada pixel por el resultado del dot3 en el canal alpha. Pero no es así!!!: el resultado es sin mas todo de color negro.

Porqueeeeee!!

PD: Si veo que nadie se entera lo intentare reescribir en spanglish, perdonen las molestias.

kansler
08-07-2003, 07:30 AM
If you don't even have the decency to post in english...

Jan
08-07-2003, 07:33 AM
Wenn du halt zu faul bist Spanisch zu lernen, dann ist das doch dein Problem.

*Aaron*
08-07-2003, 07:49 AM
Here's a link to a machine translation:
http://translation.lycos.com/lycos?systr...an_f=1060266853 (http://translation.lycos.com/lycos?systran_lp=es_en&systran_id=Lycos-en&systran_url=http://www.opengl.org/discussion_boards/ubb/Forum3/HTML/010174.html&systran_f=1060266853)

I'm not sure if the link will work.

Apesadumbrado, DraKKaR, sino yo no tenga una respuesta a su pregunta.

SirKnight
08-07-2003, 05:49 PM
Here's a tip. Since English is considered the International language aka Lingua Franca, then it's best to post things in English unless the message board rules specifically say otherwise. You will get more help this way.


-SirKnight

[This message has been edited by SirKnight (edited 08-07-2003).]

JanHH
08-07-2003, 06:25 PM
the automatic translation is quite funny.. but "opengleros" is a great word.

let us all be OpenGLeros!!

Jan

kansler
08-08-2003, 02:25 AM
Jan2000: Val dood en goed hard ook!

CatAtWork
08-08-2003, 09:44 AM
If you don't speak English, and you have an OpenGL question, where else should you post? Personally, I don't have a problem with it.