2010-01-31 63 views
3

我从这个PNG纹理:请帮助使用OpenGL ES(iPhone)多纹理(2D)代码!

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了整个网络,但仍然卡住了。

我想要实现(在文章底部的工作闪光灯草图)发动机:http://gotoandplay.freeblog.hu/archives/2010/01/07/compactTangram_072_-_tan_rendering_labs/

+0

好的。没有多重纹理。只是我无法做到。我将使用从屏幕外帧缓冲区复制的预渲染纹理。也许这样更容易实现。希望如此。 – Geri 2010-02-01 15:40:29

回答

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>); 

我不知道这是否会完成你想要什么,虽然,你可能仍然需要宗教组织这样做的权利。