Opengl es2.0 学习笔记(八)高级纹理
一.mip贴图
mip贴图是一种功能强大的纹理技巧,它不仅可以提高渲染性能,
而且可以改善场景的质量。
它主要解决两方面问题:
- 闪烁,当屏幕上被渲染物体的表面与它所应用的纹理图像相比显得非常小时,
就会出现闪烁。尤其当相机和物体在移动的时候,这种负面效果更容易被看到。 - 性能问题,加载了大量的纹理数据之后,还要对其进行过滤处理(缩小),在屏幕上显示的只是一小部分。纹理越大,所造成的性能影响就越大。但同时它也会增加额外的内存,大约比原先多出1/3内存空间。
二.多级纹理:
//第二参数是纹理级别,根据硬件不同支持多级纹理不同
glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid* pixels);
可以去gl2.h查看
/* TextureUnit */
#define GL_TEXTURE0 0x84C0
#define GL_TEXTURE1 0x84C1
#define GL_TEXTURE2 0x84C2
#define GL_TEXTURE3 0x84C3
#define GL_TEXTURE4 0x84C4
三.API
//生成mipmap纹理
glGenerateMipmap
//压缩纹理
glCompressedTexImage2D
//部分更新纹理
glCompressedTexSubImage2D
//copy纹理
glCopyTexImage2D
//copy部分纹理
glCopyTexSubImage2D
//纹理参数介绍
//第一个参数 GL_TEXTURE_2D
//第二个参数
// GL_TEXTURE_MAG_FILTER 放大滤波
// GL_TEXTURE_MIN_FILTER 缩小滤波
// GL_TEXTURE_WRAP_S 水平
// GL_TEXTURE_WRAP_T 竖直
//第三个参数
//当第二个参数输入GL_TEXTURE_MAG_FILTER/GL_TEXTURE_MIN_FILTER
// GL_NEAREST 取最邻近像素,效果一般
// GL_LINEAR 线性内部插值,效果好
//当第二个参数输入GL_TEXTURE_WRAP_S/GL_TEXTURE_WRAP_T
//GL_REPEAT 重复
//GL_CLAMP_TO_EDGE 边缘重复
//GL_MIRRORED_REPEAT 镜像重复
glTexParameteri (GLenum target, GLenum pname, GLint param);