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

原创 2004年08月03日 22:54:00

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后来变成了核心了。

OpenGL蓝宝书源码学习(二十三)第七章——MultiTexture多重纹理

在CubeMap的基础上新增了一个纹理贴图实现多重纹理。
  • perseverancep
  • perseverancep
  • 2017年06月23日 10:06
  • 236

【一步步学OpenGL 16】 -《纹理贴图》

教程16纹理贴图基础原文: http://ogldev.atspace.co.uk/www/tutorial16/tutorial16.htmlCSDN完整版专栏: http://blog.csdn....
  • cordova
  • cordova
  • 2016年10月15日 22:23
  • 6488

OpenGL3.0教程 第十五课:光照贴图

作者:  时间: April 10, 2014  分类: OpenGL ES OpenGL3.0教程 原文链接:http://www.opengl-tutorial.org/i...
  • hi_zhengjian
  • hi_zhengjian
  • 2015年09月28日 09:43
  • 1045

openGL之纹理贴图---openGL学习笔记(十三)

把图像贴到所绘制的图形上的技术,在openGL中叫做纹理贴图。 使要用纹理贴图要实现以下步骤: 1.启用纹理贴图---纹理贴图同样是状态机,所以启用方法为:gl.glEnable(GL10.GL_...
  • a358333644
  • a358333644
  • 2016年03月16日 17:41
  • 5158

OpenGL纹理贴图 JPEG纹理

1.1        JPEG纹理     大型的应用程序特别是游戏程序使用的贴图非常多,如Quake III使用的JPEG和TGA文件就有将近2000个,其中JPEG文件超过一半,占用近30M...
  • xipiaoyouzi
  • xipiaoyouzi
  • 2016年11月21日 10:54
  • 1101

OpenGL——纹理贴图

1. 创建纹理图像   OpenGL要求纹理的高度和宽度都必须是2的n次方大小,只有满足这个条件,这个纹理图片才是有效的。     一旦获取了像素值,我们就可以将这些数据传给OpenGL,让OpenG...
  • L_Andy
  • L_Andy
  • 2016年08月28日 20:22
  • 2121

使用glfw库将OpenCV读取到的图片作为OpenGL的背景纹理贴图

转载请注明出处:http://my.csdn.NET/ye_shen_wei_mian 前段时间接触过一点glfw,个人而言不太喜欢freeglut的回调机制,glfw不失为一个可以替代的选择。 ...
  • ye_shen_wei_mian
  • ye_shen_wei_mian
  • 2017年06月23日 17:29
  • 472

OpenGL--纹理贴图基础

理论基础 纹理贴图:通俗地讲就是可以把我们读取的纹理加载到图元表面的一种技术,这样大大的提高了图像的表现质量。实例代码 //读取tga格式图片/*tga图片头信息结构*/ #pragma pack...
  • u010223072
  • u010223072
  • 2015年04月18日 17:07
  • 2309

OpenGL(三) 加载贴图

有了模型还需要贴图。 加载贴图 的流程大体分为两部分,首先是图片的解码,其次是使用UV坐标与模型对应。本文主要从底层原理和第三方库两个方面来介绍 加载贴图 。下面分别介绍硬编码实现和SOIL库两种方式...
  • fansongy
  • fansongy
  • 2017年03月15日 12:12
  • 1319

OpenGL学习笔记——纹理贴图

简单地说,纹理就是矩形的数据数组。例如,颜色数据、亮度数据、颜色和alpha数据。纹理数组中的单个值常常称为纹理单元(texel)。纹理贴图之所以复杂,是因为矩形的纹理可以映射到非矩形的区域,并且必须...
  • xuexiaokkk
  • xuexiaokkk
  • 2015年10月30日 16:23
  • 8093
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OpenGL 中如何使用 MultiTexture. 即如何开启多层贴图.
举报原因:
原因补充:

(最多只允许输入30个字)