OpenGL 紋理

前言

現(xiàn)實(shí)生活中,紋理最通常的作用是裝飾我們的物體模型,它就像是貼紙一樣貼在物體表面,使得物體表面擁有圖案。但實(shí)際上在OpenGL中,紋理的作用不僅限于此,它可以用來(lái)存儲(chǔ)大量的數(shù)據(jù),一個(gè)典型的例子就是利用紋理存儲(chǔ)地形信息。

紋理常用 API簡(jiǎn)介

1.讀取TGA紋理

GLbyte *gltReadTGABits(constchar*szFileName, GLint *iWidth, GLint *iHeight, GLint *iComponents, GLenum *eFormat);

參數(shù)1:szFileName,紋理文件名稱(chēng)

參數(shù)2:iWidth,紋理文件寬度地址

參數(shù)3:iHeight,紋理文件高度地址

參數(shù)4:iComponents,紋理文件組件地址

參數(shù)5:eFormat,紋理文件格式地址

返回值: 指向圖像數(shù)據(jù)的指針

2.設(shè)置紋理參數(shù)

glTexParameteri (GLenum target,GLenum pname,GLint param); //最后一個(gè)參數(shù)是int類(lèi)型

glTexParameterf (GLenum target,GLenum pname,GLfloat param); //最后一個(gè)參數(shù)是float類(lèi)型

glTexParameteriv (GLenum target,GLenum pname,const GLint *params); //最后一個(gè)參數(shù)是*int類(lèi)型

glTexParameterfv (GLenum target,GLenum pname,const GLfloat *params); //最后一個(gè)參數(shù)是*float類(lèi)型

參數(shù)1: target,指定參數(shù)要應(yīng)用到哪個(gè)紋理模式(紋理模式:,GL_TEXTURE_1D,GL_TEXTURE_2D,GL_TEXTURE_3D)

參數(shù)2: pname,指定需要設(shè)置紋理參數(shù)

參數(shù)3: param,指定需要設(shè)置紋理參數(shù)的值

3.設(shè)置紋理對(duì)象

void glGenTextures(GLsizei n,GLuint * textTures);

參數(shù)1:n,指定紋理對(duì)象個(gè)數(shù)

參數(shù)2:textTures,指針(指針指向一個(gè)無(wú)符號(hào)整形數(shù)組,由紋理對(duì)象標(biāo)識(shí)符填充)

作用:使用函數(shù)分配紋理對(duì)象

void glBindTexture(GLenum target,GLunit texture);

參數(shù)1:target,綁定紋理的紋理模式

參數(shù)2:texture,需要綁定的紋理對(duì)象

作用:綁定紋理狀態(tài)

void glDeleteTextures(GLsizei n,GLuint *textures);

參數(shù)1:n,紋理對(duì)象個(gè)數(shù)

參數(shù)2:textures,紋理對(duì)象指針

作用:刪除綁定紋理對(duì)象

GLboolean glIsTexture(GLuint texture);

參數(shù)1:texture,綁定的紋理對(duì)象

作用:如果texture是一個(gè)已經(jīng)分配空間的紋理對(duì)象,那么這個(gè)函數(shù)會(huì)返回GL_TRUE,否則會(huì)返回GL_FALSE


紋理坐標(biāo)

將紋理覆蓋到物體表面,最終是通對(duì)齊坐標(biāo)來(lái)實(shí)現(xiàn)的。而OpenGL中二維紋理的坐標(biāo)與計(jì)算機(jī)圖像的坐標(biāo)并不一致,因此,首先對(duì)比下兩者的不同。

可見(jiàn),兩者的差別在于繞橫軸翻轉(zhuǎn)180度。另外,OpenGL ES支持的紋理不必是正方形,但每個(gè)維度都必須是2的冪。


當(dāng)我們要使用紋理貼到一個(gè)面上時(shí),可以理解為要把墻紙貼到墻上,從哪個(gè)角開(kāi)始貼可以自己選擇,下圖表示為其中一種:


當(dāng)然,坐標(biāo)不可以交叉:


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

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

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