紋理對象
//使用函數(shù)分配紋理對象
//參數(shù)1:紋理對象個數(shù),參數(shù)2:紋理對象指針(可以是多個)
void glGenTextures(GLsizei n, GLuint *textures);
//綁定紋理狀態(tài)
//參數(shù)1:紋理狀態(tài) GL_TEXTURE_1D,GL_TEXTURE_2D,GL_TEXTURE_3D
//參數(shù)2:紋理對象
void glBindTexture(GLenum target, GLuint texture);
//刪除綁定的紋理對象
//參數(shù)1:紋理對象個數(shù),參數(shù)2:紋理對象指針(可以是多個)
void glDeleteTextures(GLsizei n, const GLuint *textures)
//測試紋理對象是否有效
//如果texture是一個已經(jīng)分配空間的紋理對象,那么這個函數(shù)會返回GL_TURE,否則GL_FALSE
GLboolean glIsTexture(GLuint texture)
讀取.TGA文件的紋理
//參數(shù)1:紋理文件名稱
//參數(shù)2:文件寬度地址
//參數(shù)3:文件高度地址
//參數(shù)4:文件每個像素點讀取出的顏色值地址
//參數(shù)5:文件OpenGL的像素格式地址
//返回值:pBits,指向圖像數(shù)據(jù)的指針
GLbyte* gltReadTGABits(const char *szFileName, GLint *iWidth, GLint *iHeight, GLint *iComponents, GLenum *eFormat);
設(shè)置紋理參數(shù)
設(shè)置環(huán)繞方式
//參數(shù)1:紋理維度
//參數(shù)2:為S/T坐標(biāo)設(shè)置模式(s,t,r對應(yīng)x,y,z)
//參數(shù)3:環(huán)繞模式 ,下邊補充里有環(huán)繞模式講解
void GLAPIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
如:glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
設(shè)置過濾方式
//參數(shù)1:紋理維度
//參數(shù)2:放大/縮小 時設(shè)置過濾方式
//參數(shù)3:過濾方式(一般縮小時用線性,放大時用過濾)
void GLAPIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
如:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
載入紋理
//參數(shù)1:紋理維度
//參數(shù)2:mip貼圖層次
//參數(shù)3:紋理單元存儲的顏色成分(可以從讀取像素圖時獲得)
//參數(shù)4:加載紋理寬
//參數(shù)5:加載紋理高
//參數(shù)6:邊界寬度
//參數(shù)7:加載OpenGL的像素格式
//參數(shù)8:像素數(shù)據(jù)的數(shù)據(jù)類型(GL_UNSIGNED_BYTE,每個顏色分量都是一個8位無符號整數(shù))
//參數(shù)9:指向紋理圖像數(shù)據(jù)的指針
void glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels)
//使用完記得釋放 那個參數(shù)9
void free(void *)
環(huán)繞方式
| 環(huán)繞方式 | 描述 |
|---|---|
| GL_REPEAT | 對紋理的默認(rèn)行為,重復(fù)紋理圖像 |
| GL_MIRRORED_REPEAT | 和GL_REPEAT一樣,但每次重復(fù)圖片是鏡像放置的 |
| GL_CLAM_TO_EDGE | 紋理坐標(biāo)會被約束在0到1之間,超出的部分會重復(fù)紋理坐標(biāo)的邊緣,產(chǎn)生一種邊緣被拉伸的效果 |
| GL_CLAM_TO_BORDER | 超出的坐標(biāo)為用戶指定的邊緣顏色 |

image.png