Please help with an OpenGL ES (iPhone) multi-texturing (2D) code!

匿名 (未验证) 提交于 2019-12-03 00:59:01

问题:

I have a texture from this PNG:

alt text http://gotoandplay.freeblog.hu/files/tan0_Diffuse_1.png

And another from this PNG:

alt text http://gotoandplay.freeblog.hu/files/tan0_Specular_1.png

They both have the same blend function:

glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); 

I want to see them on one single polygon first. I just couldn't find a simple example of this. Draw them to different polygons works perfect, but I just cannot "merge" them into one texture. Any working sample codelines would be appriciated well.

Second problem is to make the specular map's alpha variable. I can see that I have to texture combine somehow it's alpha with the primary color (created from my variable), but again, have no working example of codes. I began to study glTexEnvi function, but yet I have no any result.

Please, I beg you for just about 16 lines of code! I googled the whole net, but still stuck.

The engine I want to implement (working flash sketch on the bottom of the post): http://gotoandplay.freeblog.hu/archives/2010/01/07/compactTangram_072_-_tan_rendering_labs/

回答1:

I don't know the exact lines of code that you need, but it seems that you were on the right path with glTexEnv... This book on opengles 1.1 talks about it some. I think what you want are texture combiners:

glActiveTexture(GL_TEXTURE0); glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, myTextureObject); glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);  // Tell OpenGL which arithmetic operation to use:  glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, <operation>);  // Set the first argument: glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, <source0>); glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, <operand0>);  // Set the second argument: glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, <source1>); glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB, <operand1>); 

I don't know if this will accomplish what you want though, you may still need the FBOs to do it right.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!