{
1:纹理介绍
2:删除纹理
3:两个概念
4:添加代码
}
{1:纹理介绍
把图像数据应用到几何图源时成为纹理或纹理贴图,纹理图像被加载后,具有和像素图像相同的排列和成分,但此时纹理单元和屏幕上的图像之间很少存在一对一的对应关系
纹理(类型)
一维纹理 sampler1D
二维纹理 sampler2D(常用)
三维纹理 sampler3D
立体纹理 samplerCube
阴影纹理
}
{2:删除纹理
unsigned tId=0;
glGenTextures(1,&tId);//生成纹理的索引
...
glDeleteTextures(1,&tId);
}
{3:两个概念
一张纹理有10个层次[0,10] (512*512,256*256,128*128,...1*1 具体大小自己定) 可以全用也可以只用一个[0,10] 0最大,10最小
glTexImage2D (GL_TEXTURE_2D,[0~10], format, width, height,0,format,GL_UNSIGNED_BYTE, pixels);
一个面可以绑定32张纹理[GL_TEXTURE0~GL_TEXTURE031]
unsigned t0=loadTexture("res/0.png");//加载纹理资源
glActiveTexture(GL_TEXTURE0);//指定纹理级别(一张纹理不需要)
glBindTexture(GL_TEXTURE_2D,t0);//绑定纹理
glUniform1i(shader._tId0,0);//指定纹理阶段[0,31]
unsigned t2=loadTexture("res/1.png");//加载纹理资源
glActiveTexture(GL_TEXTURE1);//指定纹理级别(一张纹理不需要)
glBindTexture(GL_TEXTURE_2D,t2);//绑定纹理
glUniform1i(shader._tId1,1);//指定纹理阶段[0,31]
...
}
4:添加代码
#include "freeImage/FreeImage.h"
连接器->输入->附加依赖项 FreeImage.lib;
{纹理加载步骤
1:获取图片格式
2:加载图片
3:转化为rgb 24色或32色
4:获取数据指针
...插入OpenGL代码
5:释放
}
GL_TEXTURE_MAG_FILTER 放大滤波(参数)
GL_NEAREST
GL_LINEAR
GL_TEXTURE_MIN_FILTER 缩小滤波(参数)
GL_NEAREST
GL_LINEAR
GL_NEAREST_MIPMAP_NEAREST
GL_LINEAR_MIPMAP_NEAREST
GL_NEAREST_M