我有这个PNG的纹理:
alt text http://gotoandplay.freeblog.hu/files/tan0_Diffuse_1.png
另一个来自PNG:
alt text http://gotoandplay.freeblog.hu/files/tan0_Specular_1.png
它们都具有相同的混合功能:
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
我想先在一个多边形上看到它们。我找不到一个简单的例子。将它们绘制成不同的多边形工作完美,但我不能将它们“合并”成一个纹理。任何工作样本代码都会很好地适应。
第二个问题是制作镜面反射贴图的alpha变量。我可以看到我必须纹理合并它的alpha版本与主要颜色(从我的变量创建),但再次,没有工作代码示例。我开始研究glTexEnvi函数,但我没有任何结果。
请我求你了大约16行代码!我用Google搜索了整个网络,但仍然卡住了。
我想要实现的引擎(在帖子底部使用flash草图):http://gotoandplay.freeblog.hu/archives/2010/01/07/compactTangram_072_-_tan_rendering_labs/
答案 0 :(得分:0)
我不知道您需要的确切代码行,但似乎您使用glTexEnv处于正确的路径......这个book on opengles 1.1会谈到它。我认为你想要的是纹理合成器:
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>);
我不知道这是否能达到你想要的效果,你可能还需要FBO才能做到这一点。