opengl管理texture參數的函數總結


glTexParameter和glTextureParameter兩個系列的函數(都分為i和f,還有iv,fv等)。

void glTexParameteri( GLenum target, GLenum pname, GLint param);

glTexParameter是用來處理Active Texture的。要先用Active Texture來激活它。當然,也可以在Texture剛剛創建之后就設置它的屬性。其中target可以是GL_TEXTURE_2DGL_TEXTURE_3DGL_TEXTURE_2D_ARRAYGL_TEXTURE_2D_MULTISAMPLEGL_TEXTURE_2D_MULTISAMPLE_ARRAYGL_TEXTURE_CUBE_MAP,   GL_TEXTURE_CUBE_MAP_ARRAY 之一。

可見它也是隱喻,同一個Vao,只能有一套這類Texture,所以才能用target來標志要操作哪個Texture。

glTextureParameter,則是用來處理用ID表示的Texture。這種方式,無疑更加合理,更加清晰。但是可惜,只有opengl 4.5以后才有。opengl es則沒有。

用glTexParameter,基本也就無法在創建后改變Texture參數了,找起來很麻煩。好在也沒多少這種需求。

然后,帶v的函數,大多是是用來處理一個四元數的。一個是顏色,GL_TEXTURE_BORDER_COLOR, 還有一個GL_TEXTURE_SWIZZLE_RGBA,用來表示顏色的重新排序。

對於border的顏色,glTexparameterIiv版本函數和glTexParameterfv函數,操作的是同一個顏色。f版的顏色,取值范圍是0到1之間,i版就把這個顏色值分布到0和Int的最大值之間。比如,f版設定的顏色是(0.1,0.2,0.3,0,4),I版的顏色值就是int的最大值乘以這四個數。

注意,glTexParameterIv函數(一個i),是特殊的。它是用特殊方式表示的浮點數。轉換公式是f=(2c+1)/(2^b-1)。這個函數就專門用於設置GL_TEXTURE_BORDER_COLOR,實際上也不需要用到它,很麻煩,跟另外兩個函數功能一樣的,屬於畫蛇添足的東西。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM