设为首页 加入收藏

TOP

OpenGL ES1.X多重纹理的实现
2015-02-02 14:43:47 来源: 作者: 【 】 浏览:19
Tags:OpenGL ES1.X 多重 纹理 实现

参考:http://stackoverflow.com/questions/1952720/opengl-es-multi-texture-alpha-blending-question


? ? ? ? ? ? https://www.opengl.org/wiki/Texture_Combiners#Example_:_multiply_tex0_and_tex1


网上查了一下,说是使用texture combiners?进行实现,试了一下果然成功了。下面代码主要实现了两个纹理的相乘,伪代码如下:


?result_rgb = texture0_rgb ? ? //Just read the texture
?result_a = texture0_a
?result_rgb = result_rgb * texture1_rgb
?result_a = result_a * texture1_a


具体的实现代码如下:


?glActiveTexture(GL_TEXTURE0);
? ? glEnable(GL_TEXTURE_2D);
? ? glBindTexture(GL_TEXTURE_2D, gTexture2);
? ? //Simply sample the texture
? ? glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
? ? //------------------------
? ? glActiveTexture(GL_TEXTURE1);
? ? glEnable(GL_TEXTURE_2D);
? ? glBindTexture(GL_TEXTURE_2D, gTexture3);
? ? glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE);
? ? //Sample RGB, multiply by previous texunit result
? ? glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_MODULATE);? //Modulate RGB with RGB
? ? glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_RGB, GL_PREVIOUS);
? ? glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_RGB, GL_TEXTURE);
? ? glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB, GL_SRC_COLOR);
? ? glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB, GL_SRC_COLOR);
? ? //Sample ALPHA, multiply by previous texunit result
? ? glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA, GL_MODULATE);? //Modulate ALPHA with ALPHA
? ? glTexEnvi(GL_TEXTURE_ENV, GL_SRC0_ALPHA, GL_PREVIOUS);
? ? glTexEnvi(GL_TEXTURE_ENV, GL_SRC1_ALPHA, GL_TEXTURE);
? ? glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA, GL_SRC_ALPHA);
? ? glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_ALPHA, GL_SRC_ALPHA);
? ? render();


比较重要的是,如何设置纹理坐标。设置代码如下:


? ? ? glClientActiveTexture(GL_TEXTURE0);//设置texture0的纹理坐标
? ? ? glTexCoordPointer(2, GL_FLOAT, 0, gTextureSquareCoord3); // 设置纹理坐标


? ? ? glClientActiveTexture(GL_TEXTURE1);//设置texture1的纹理坐标
? ? ? glTexCoordPointer(2, GL_FLOAT, 0, gTextureSquareCoord3); // 设置纹理坐标


-------------------------------------分割线-------------------------------------


-------------------------------------分割线-------------------------------------


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇jQuery数组操作学习笔记 下一篇二叉树转换为双向环形链表

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: