请帮助使用OpenGL ES(iPhone)多纹理(2D)代码!

时间:2010-01-31 21:13:34

标签: iphone opengl-es textures multitexturing

我有这个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/

1 个答案:

答案 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才能做到这一点。