指定纹理glTexImage2D、GLUtils.texImage2D

来源:互联网 发布:南风知我意txt 编辑:程序博客网 时间:2024/06/07 16:45

http://ranfeng0610.blog.163.com/blog/static/185708284201301522315706/

OpenGL 提供了三个函数来指定纹理: glTexImage1D(), glTexImage2D(), glTexImage3D(). 这三个版本用于相应维数的纹理,我们用到的是 2D 版本: glTexImage2D().

函数原型:

void glTexImage2D(GLenum target,GLint level,GLint components,GLsizei width, glsizei height,GLint border,GLenum format,GLenum type, const GLvoid *pixels);

函数功能:定义一个二维纹理映射。

函数参数:

target ---- 是常数GL_TEXTURE_2D。

level ---- 表示多级分辨率的纹理图像的级数,若只有一种分辨率,则level设为0。
  components ---- 是一个从1到4的整数,指出选择了R、G、B、A中的哪些分量用于调整和混合,1表示选择了R分量,2表示选择了R和A两个分量,3表示选择了R、G、B三个分量,4表示选择了R、G、B、A四个分量。
  width和height ---- 给出了纹理图像的长度和宽度,参数border为纹理边界宽度,它通常为0,width和height必须是2m+2b,这里m是整数,长和宽可以有不同的值,b是border的值。纹理映射的最大尺寸依赖于OpenGL,但它至少必须是使用64x64(若带边界为66x66),若width和height设置为0,则纹理映射有效地关闭。
  format和type ---- 描述了纹理映射的格式和数据类型,它们在这里的意义与在函数glDrawPixels()中的意义相同,事实上,纹理数据与glDrawPixels()所用的数据有同样的格式。参数format可以是GL_COLOR_INDEX、GL_RGB、GL_RGBA、GL_RED、GL_GREEN、GL_BLUE、GL_ALPHA、GL_LUMINANCE或GL_LUMINANCE_ALPHA(注意:不能用GL_STENCIL_INDEX和GL_DEPTH_COMPONENT)。类似地,参数type是GL_BYPE、GL_UNSIGNED_BYTE、GL_SHORT、 GL_UNSIGNED_SHORT、GL_INT、GL_UNSIGNED_INT、GL_FLOAT或GL_BITMAP。
  pixels ---- 包含了纹理图像数据,这个数据描述了纹理图像本身和它的边界。

参数过多,可以使用 GLUtils 中的 texImage2D() 函数,好处是直接将 Bitmap 数据作为参数:

void texImage2D (int target, int level, Bitmap bitmap, int border)

参数:

target ---- 操作的目标类型,设为 GL_TEXTURE_2D 即可

level ---- 纹理的级别

bitmap ---- 图像

border ---- 边框,一般设为0

原创粉丝点击