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

iOS开发中如何使用广告-iAd-Admob

-
  • 1970年01月01日 08:00

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

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

OpenGLES - glBindTexture 绑定纹理缓存到纹理单元

OpenGLES - glBindTexture 绑定纹理缓存到纹理单元
  • sleks
  • sleks
  • 2014-02-25 08:21:16
  • 3669

在OpenGL中实现多纹理混合(Multi-texture Blending)

     多纹理混合技术在地形渲染中用得很广泛,用来将非常不同的多个纹理(如石头和草)混合起来,看不出明显的边缘。例如,你可以用3个纹理(石头、草和沙子)来渲染一座山,在山的底部用草和沙子来混合。  ...
  • skyman_2001
  • skyman_2001
  • 2005-02-21 22:08:00
  • 4478

OpenGL-- Shader 多个纹理 变换

源码参考: http://learnopengl-cn.readthedocs.io/zh/latest/01%20Getting%20started/08%20Coordinate%20System...
  • yulinxx
  • yulinxx
  • 2016-12-13 19:02:08
  • 2453

使用multi_compile编译Shader的多个版本

 主要参考: http://www.66acg.com/?post=81 一、新建一个Shader和一个Material Shader "Custom/Multi_Com...
  • aa20274270
  • aa20274270
  • 2016-07-14 15:52:12
  • 2092

OpenGL下多个sampler在shader中的使用

在OpenGL中,sampler2D/Cube等做为uniform可以在fragment shader中使用。结合glActiveTexture和glUniform1i,实现texture与sampl...
  • mythma
  • mythma
  • 2014-09-01 15:46:21
  • 7871

OpenGL实现多层绘制(Layered Rendering)

多层绘制可以一次性渲染多张纹理,还能实现一些更为方便的功能,比如只调用一次shader就完成多个不同视口图像的绘制。实在是利器。 要实现Layered Rendering,需要用到多层纹理Array ...
  • u010462297
  • u010462297
  • 2016-01-26 21:47:03
  • 3042

OpenGL的实现多层显示

  • 2017年07月28日 00:45
  • 35.46MB
  • 下载

【C++ OpenGL ES 2.0编程笔记】4: 纹理贴图-图片叠加效果实现

本文介绍了如何使用C++语言和OpenGL ES 2.0 API实现纹理图片的叠加显示效果
  • elloop
  • elloop
  • 2016-01-04 21:44:05
  • 3827
收藏助手
不良信息举报
您举报文章:OpenGL 中如何使用 MultiTexture. 即如何开启多层贴图.
举报原因:
原因补充:

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