OpenGL ES 纹理过滤模式-glTexParameteri_第1张图片

Android中GLES20.glTexParameteri函数表示对纹理的设置,函数结构如下:

public static native void glTexParameteri(        int target,        int pname,        int param    );

参数说明如下:

  • target: 活动纹理单元的目标纹理,GLES20.GL_TEXTURE_2D表示2D纹理,还有其他纹理,比如GLES11Ext.GL_TEXTURE_EXTERNAL_OES,这是Android特有的OES纹理,预览相机或者视频使用此纹理。

  • pname:纹理参数的标记名,可以设置的值如下:GL_TEXTURE_MIN_FILTER, GL_TEXTURE_MAG_FILTER, GL_TEXTURE_WRAP_S 或 GL_TEXTURE_WRAP_T。

  • param:设置的值。

GL_TEXTURE_WRAP_S和GL_TEXTURE_WRAP_T

纹理的坐标系统叫做ST坐标系统,和xy坐标系统一样,s对应x,t对应y,因此GL_TEXTURE_WRAP_S和GL_TEXTURE_WRAP_T表示超出范围的纹理处理方式,可以设置的值如下:GL_CLAMP_TO_EDGE、GL_REPEAT、GL_MIRRORED_REPEAT。

将纹理的坐标值设置超出界限,纹理坐标如下:

var texBuffer = GLTools.array2Buffer(            floatArrayOf(                0.0f, 0.0f,                0.0f, 1.0f,                2.0f, 1.0f,                2.0f, 0.0f            )        )
  • GL_CLAMP_TO_EDGE:采样纹理边缘,即剩余部分显示纹理临近的边缘颜色值。效果如下:

OpenGL ES 纹理过滤模式-glTexParameteri_第2张图片

后面的部分使用纹理的最后像素的颜色值。

  • GL_REPEAT:重复纹理。效果如下:

OpenGL ES 纹理过滤模式-glTexParameteri_第3张图片

  • GL_MIRRORED_REPEAT:镜像重复,效果如下:

OpenGL ES 纹理过滤模式-glTexParameteri_第4张图片

GL_TEXTURE_WRAP_T和GL_TEXTURE_WRAP_S一样,T代表y轴。

GL_TEXTURE_MIN_FILTER和GL_TEXTURE_MAG_FILTER

当纹理的大小和渲染屏幕的大小不一致时会出现两种情况:

  • 第一种情况:纹理大于渲染屏幕,将会有一部分像素无法映射到屏幕上,对应于GL_TEXTURE_MIN_FILTER。

  • 第二种情况:纹理小于渲染屏幕,没有足够的像素映射到屏幕上,GL_TEXTURE_MAG_FILTER。

可设置的值为GL_NEAREST 、GL_LINEAR。

  • GL_NEAREST:使用纹理中坐标最接近的一个像素的颜色作为需要绘制的像素颜色。

  • GL_LINEAR:使用纹理中坐标最接近的若干个颜色,通过加权平均算法得到需要绘制的像素颜色,与GL_NEAREST比较速度较慢。

视觉效果如下图:

OpenGL ES 纹理过滤模式-glTexParameteri_第5张图片

左面的图为GL_LINEAR的效果,是放大模糊的效果。右面的图是GL_NEAREST的效果,锯齿比较明显,但没有模糊。

 

更多相关文章

  1. android samplerExternalOES 纹理
  2. Unity3D for Android 纹理压缩支持
  3. Android OpenGLES2.0(八)——纹理贴图之显示图片
  4. android 获取定位坐标,在百度地图出现大偏移的处理办法
  5. android 字体大小像素的设置
  6. android 字体大小,样式 ,像素的设置
  7. Android - 像素密度和屏幕适配
  8. Android 自定义像素AVD模拟器无键盘
  9. Android 中如何得到字符的像素宽度

随机推荐

  1. 一个java android 时钟 非常精致!android
  2. android adb 控制手机
  3. android字体闪烁动画(线程)
  4. Android设置拍照或者上传本地图片
  5. Android:textView加载Html,只加载文字
  6. Android消息处理机制4——Looper
  7. Android Gradle Plugin指南(三)----依赖关
  8. Android按键事件发布流程
  9. Android 系统永不休眠
  10. android8.0 launcher改透明