OpenGL 中如何使用 MultiTexture. 即如何开启多层贴图.

OpenGL 中如何使用 MultiTexture. 即如何开启多层贴图.

 

问题回答: By Xheartblue
1: glActiveTexture(GL_TEXTUREn);可以控制当前的纹理操作是作用到哪个Tex_Unit上的。
GL_TEXTUREn中的n从0到31.具体看glext.h定义.

2:glActiveTExture为一个扩展.但是已经在OpenGL 1.3的核心里。所以DOC到GLSpec1.3 中去找.


3:glMultTexCoord(GL_TEXTUREn,....);用来指定某个Tex_Unit的纹理坐标.

4:glClientActiveTexture(GL_TEXTUREn);用来控制以下的函数影响的是第n个Tex_Unit
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer

5: eg .使用第二个纹理代码如下
glActiveTexture(GL_TEXTURE1);
glEnable(GL_TEXTURE_2D);
glBindTexture(...):
glTexEnv(......):
关闭第二个纹理的代码如下
glActiveTexture(GL_TEXTURE1);
glDisable(GL_TEXTURE_2D);
glActiveTexture(GL_TEXTURE0);//改变回第一个.否则以后的操作都是对GL_TEXTURE1的。

使用两个纹理通道的 Vertex Array
//使用两个纹理通道.全要激活他们.
glClientActiveTexture(GL_TEXTURE0);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glClientActiveTexture(GL_TEXTURE1);
glEnableClientState(GL_TEXTURE_COORD_ARRAY)


glClientActiveTexture(GL_TEXTURE0);
glTexCoordPointer();
glClientActiveTexture(GL_TEXTURE1);
glTexCoordPointer();

........................

glDrawArrays(....

//用完两个通道.全都关闭.
glClientActiveTexture(GL_TEXTURE0);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glClientActiveTexture(GL_TEXTURE1);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);

//关闭第二个纹理通道
glActiveTexture(GL_TEXTURE1);
glDisable(GL_TEXTURE_2D);
glActiveTexture(GL_TEXTURE0);
glEnable(GL_TEXTURE_2D);

6 : 最后补充: 带不带ARB都一样的。看定义就知道了。ARB后来变成了核心了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值