OpenGL紋理常用API解析

紋理對象

//使用函數(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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 文: CC老師著作所屬權(quán)歸該作者所有,任何形式轉(zhuǎn)載請聯(lián)系作者并注明原文出處. 紋理只是一種能夠應(yīng)用到場景中的三角形...
    CC老師_HelloCoder閱讀 2,219評論 0 6
  • 1 紋理基礎(chǔ) 紋理是一種結(jié)構(gòu)化的存儲形式(Textures are a structured form of st...
    RichardJieChen閱讀 16,579評論 0 10
  • 一、紋理綜述 物理世界中,視域內(nèi)的顏色會發(fā)生快速的變化。你可以看到很多物體表面都會呈現(xiàn)出豐富的顏色,并且在狹小的面...
    凡幾多閱讀 1,122評論 1 5
  • 版本記錄 前言 OpenGL 圖形庫項目中一直也沒用過,最近也想學(xué)著使用這個圖形庫,感覺還是很有意思,也就自然想著...
    刀客傳奇閱讀 9,250評論 0 8
  • 紋理 現(xiàn)實生活中,紋理最通常的作用是裝飾我們的物體模型,它就像是貼紙一樣貼在物體表面,使得物體表面擁有圖案。但實際...
    zhongxiaoyue閱讀 434評論 0 0

友情鏈接更多精彩內(nèi)容