日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > web前端 > htmlcss > three.js 源碼注釋?zhuān)ㄈ㏕exture/CubeTexture.js

three.js 源碼注釋?zhuān)ㄈ㏕exture/CubeTexture.js

來(lái)源:程序員人生   發(fā)布時(shí)間:2014-12-22 08:18:27 閱讀次數(shù):3025次

商域無(wú)疆 (http://blog.csdn.net/omni360/)

本文遵守“署名-非商業(yè)用處-保持1致”創(chuàng)作公用協(xié)議

轉(zhuǎn)載請(qǐng)保存此句:商域無(wú)疆 -  本博客專(zhuān)注于 敏捷開(kāi)發(fā)及移動(dòng)和物聯(lián)裝備研究:數(shù)據(jù)可視化、GOLANG、Html5、WEBGL、THREE.JS,否則,出自本博客的文章謝絕轉(zhuǎn)載或再轉(zhuǎn)載,謝謝合作。


俺也是剛開(kāi)始學(xué),好多地兒肯定不對(duì)還請(qǐng)見(jiàn)諒.

以下代碼是THREE.JS 源碼文件中Texture/CubeTexture.js文件的注釋.

更多更新在 : https://github.com/omni360/three.js.sourcecode


/** * @author mrdoob / http://mrdoob.com/ */ /* ///CubeTexture類(lèi)用來(lái)為面創(chuàng)建1個(gè)反射折射或紋理貼圖對(duì)象組成的立方體,這里和THREE.Texture方法不同的是,這里創(chuàng)建的是1個(gè)由貼圖組成的立方體 /// 這個(gè)類(lèi)是最重要的屬性是image,這是1個(gè)JavaScript Image類(lèi)型對(duì)象。傳入的第1個(gè)參數(shù)就是該對(duì)象, ///后面的對(duì)象都是可選的,如果缺省就會(huì)填充默許值,而且常常都是填充默許值。 ///屬性magFileter和minFileter指定紋理在放大和縮小時(shí)的過(guò)濾方式:最鄰近點(diǎn)、雙線性?xún)?nèi)插等。 ///從url中生成1個(gè)texture,需要調(diào)用Three.ImageUtils.loadTextureCube(paras), ///該函數(shù)返回1個(gè)texture類(lèi)型對(duì)象。在函數(shù)內(nèi)部又調(diào)用了THREE.ImageLoader.load(paras)函數(shù),這個(gè)函數(shù)內(nèi)部又調(diào)用了THREE.Texture()構(gòu)造函數(shù),生成紋理。 /// /// ///Example // load a CubeTexture, set wrap mode to repeat var images = ["textures/water.jpg","textures/water.jpg","textures/water.jpg""textures/water.jpg","textures/water.jpg","textures/water.jpg"] var texture = THREE.ImageUtils.loadTextureCube( images ); texture.wrapS = THREE.RepeatWrapping; texture.wrapT = THREE.RepeatWrapping; texture.repeat.set( 4, 4 ); /// */ ///<summary>CubeTexture</summary> ///<param name ="images" type="ImageArray">JavaScript Image類(lèi)型對(duì)象數(shù)組,數(shù)組長(zhǎng)度為6</param> ///<param name ="mapping" type="Number">映照模式,參考Texture/Texture.js的注釋</param> ///<param name ="wrapS" type="Number">S方向覆蓋模式,參考Texture/Texture.js的注釋</param> ///<param name ="wrapT" type="Number">T方向覆蓋模式,參考Texture/Texture.js的注釋</param> ///<param name ="magFilter" type="Number">紋理在放大時(shí)的過(guò)濾方式,參考Texture/Texture.js的注釋</param> ///<param name ="minFilter" type="Number">紋理在縮小時(shí)的過(guò)濾方式,參考Texture/Texture.js的注釋</param> ///<param name ="format" type="Number">像素?cái)?shù)據(jù)的色彩格式,參考Texture/Texture.js的注釋</param> ///<param name ="type" type="Number">數(shù)據(jù)類(lèi)型,默許為不帶符號(hào)8位整形值</param> ///<param name ="anisotropy" type="Float">各向異性,取值范圍0.0⑴.0,常常用來(lái)通過(guò)這個(gè)值,產(chǎn)生不同的表面效果,木材和金屬都發(fā)光,但是發(fā)光的特點(diǎn)是有區(qū)分的.</param> ///<returns type="CubeTexture">返回創(chuàng)建的紋理對(duì)象</returns> THREE.CubeTexture = function ( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) { THREE.Texture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ); //調(diào)用Texture對(duì)象的call方法,將本來(lái)屬于Texture的方法交給當(dāng)前對(duì)象CubeTexture來(lái)使用. this.images = images; //賦值this.images屬性數(shù)組 }; /************************************************* ****下面是CubeTexture對(duì)象的方法屬性定義,繼承自Texture **************************************************/ // THREE.Texture = function ( image, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) { // this.id = THREE.TextureIdCount ++; //紋理屬性id // this.uuid = THREE.Math.generateUUID(); //紋理uuid(通用唯1標(biāo)識(shí)碼)屬性 // this.name = ''; //紋理名稱(chēng)屬性,可有可無(wú) // this.image = image !== undefined ? image : THREE.Texture.DEFAULT_IMAGE; //紋理的圖片,最重要的屬性是image,這是1個(gè)JavaScript Image類(lèi)型對(duì)象。 // /* // Mipmap // 在3維世界中,顯示1張圖的大小與攝象機(jī)的位置有關(guān),近的地方,圖片實(shí)際象素就大1些,遠(yuǎn)的地方圖片實(shí)際象 // 素就會(huì)小1些,就要進(jìn)行1些緊縮,例如1張64*64的圖,在近處,顯示出來(lái)多是50*50,在遠(yuǎn)處可能顯示出來(lái)是20*20. // 如果只限于簡(jiǎn)單的支掉某些像素,將會(huì)使縮小后的圖片損失很多細(xì)節(jié),圖片變得很粗糙,因此,圖形學(xué)有很多復(fù)雜的方 // 法來(lái)處理縮小圖片的問(wèn)題,使得縮小后的圖片仍然清晰,但是,這些計(jì)算都會(huì)耗費(fèi)1定的時(shí)間. // Mipmap紋理技術(shù)是目前解決紋理分辨率與視點(diǎn)距離關(guān)系的最有效途徑,它會(huì)先將圖片緊縮成很多逐步縮小的圖片, // 例如1張64*64的圖片,會(huì)產(chǎn)生64*64,32*32,16*16,8*8,4*4,2*2,1*1的7張圖片,當(dāng)屏幕上需要繪制像素點(diǎn)為20*20 時(shí), // 程序只是利用 32*32 和 16*16 這兩張圖片來(lái)計(jì)算出行將顯示為 20*20 大小的1個(gè)圖片,這比單獨(dú)利用 32*32 的 // 那張?jiān)计?jì)算出來(lái)的圖片效果要好很多,速度也更快. // 參考:http://zh.wikipedia.org/wiki/Mipmap // 參考:http://staff.cs.psu.ac.th/iew/cs344⑷81/p1-williams.pdf // 參考:http://blog.csdn.net/linber214/article/details/3342051 // */ // this.mipmaps = []; //寄存mipmaps的屬性數(shù)組 // this.mapping = mapping !== undefined ? mapping : THREE.Texture.DEFAULT_MAPPING; //映照模式,有THREE.UVMapping平展映照,THREE.CubeReflectionMapping 立方體反射映照,THREE.CubeRefractionMapping立方體折射映照,THREE.SphericalReflectionMapping球面反射映照,THREE.SphericalRefractionMapping球面折射映照. // //關(guān)于紋理s方向,t方向參考http://blog.csdn.net/kylaoshu364/article/details/5608851 // this.wrapS = wrapS !== undefined ? wrapS : THREE.ClampToEdgeWrapping; //S方向覆蓋模式,默許為T(mén)HREE.ClampToEdgeWrapping,(夾取),超過(guò)1.0的值被固定為1.0。超過(guò)1.0的其它地方的紋理,沿用最后像素的紋理。用于當(dāng)疊加過(guò)濾時(shí),需要從0.0到1.0精確覆蓋且沒(méi)有模糊邊界的紋理。 // //還有THREE.RepeatWrapping(重復(fù))和THREE.MirroredRepeatWrapping(鏡像) // this.wrapT = wrapT !== undefined ? wrapT : THREE.ClampToEdgeWrapping; //T方向覆蓋模式,默許為T(mén)HREE.ClampToEdgeWrapping,(夾取),超過(guò)1.0的值被固定為1.0。超過(guò)1.0的其它地方的紋理,沿用最后像素的紋理。用于當(dāng)疊加過(guò)濾時(shí),需要從0.0到1.0精確覆蓋且沒(méi)有模糊邊界的紋理。 // //還有THREE.RepeatWrapping(重復(fù))和THREE.MirroredRepeatWrapping(鏡像) // /* // 紋素 // 紋素(英語(yǔ):Texel,即texture element或texture pixel的合成字)是紋理元素的簡(jiǎn)稱(chēng),它是計(jì)算機(jī)圖形紋理空間中的基本單元[1]。猶如圖象是由像素排列而成,紋理是由紋素排列表示的。 // 紋素可以由圖象范圍來(lái)定義,其范圍可以通過(guò)1些簡(jiǎn)單的方法來(lái)獲得,比如閥值。沃羅諾伊散布可以用來(lái)描寫(xiě)紋素之間的空間關(guān)系。這就意味著我們可以通過(guò)將紋素與其周?chē)募y素圖心的連線的垂直平分線將全部紋理分割成連續(xù)的多邊形。結(jié)果就是每個(gè)紋素圖心都會(huì)有1個(gè)沃羅諾伊多邊形將其圈起來(lái)。 // 在對(duì)3維表面鋪設(shè)紋理的時(shí)候,通過(guò)紋理映照技術(shù)將紋素映照到恰當(dāng)?shù)妮敵鰣D象像素上。在現(xiàn)今的計(jì)算機(jī)上,這個(gè)進(jìn)程主要是由圖形卡完成的。 // 紋理工序起始于空間中的某1位置。這個(gè)位置可以是在世界坐標(biāo)系中,但是1般情況下會(huì)設(shè)定在物體坐標(biāo)系中。這樣紋理睬隨著物體運(yùn)動(dòng)。然后通過(guò)投射的方式將其位置(坐標(biāo))從3維矢量值轉(zhuǎn)化為0到1范圍的2維矢量值(即uv)。再將這個(gè)2維矢量值與紋理的分辨率相乘從而取得紋素的位置。 // 當(dāng)所需紋素的位置不是整數(shù)的時(shí)候,需要使用紋理濾鏡進(jìn)行處理。 // // 紋理在放大或縮小時(shí)的過(guò)濾方式,過(guò)濾方式,有THREE.NearestFilter在紋理基層上履行最鄰近過(guò)濾, // //THREE.NearestMipMapNearestFilter在mip層之間履行線性插補(bǔ),并履行最鄰近的過(guò)濾, // //THREE.NearestMipMapLinearFilter選擇最鄰近的mip層,并履行最鄰近的過(guò)濾, // //THREE.LinearFilter在紋理基層上履行線性過(guò)濾 // //THREE.LinearMipMapNearestFilter選擇最鄰近的mip層,并履行線性過(guò)濾, // //THREE.LinearMipMapLinearFilter在mip層之間履行線性插補(bǔ),并履行線性過(guò)濾 // 參考:http://blog.csdn.net/kkk328/article/details/7055934 // 參考:http://xiaxveliang.blog.163.com/blog/static/297080342013467552467/ // */ // this.magFilter = magFilter !== undefined ? magFilter : THREE.LinearFilter; //紋理在放大時(shí)的過(guò)濾方式,THREE.LinearFilter在紋理基層上履行線性過(guò)濾 // this.minFilter = minFilter !== undefined ? minFilter : THREE.LinearMipMapLinearFilter; //紋理在縮小時(shí)的過(guò)濾方式,THREE.LinearMipMapNearestFilter選擇最鄰近的mip層,并履行線性過(guò)濾 // this.anisotropy = anisotropy !== undefined ? anisotropy : 1; //各向異性,取值范圍0.0⑴.0,常常用來(lái)通過(guò)這個(gè)值,產(chǎn)生不同的表面效果,木材和金屬都發(fā)光,但是發(fā)光的特點(diǎn)是有區(qū)分的. // /************************************************************************* // 參數(shù) format 定義了圖象數(shù)據(jù)數(shù)組 texels 中的格式。可以取值以下: // 圖象數(shù)據(jù)數(shù)組 texels 格式 格式 注解 // GL_COLOR_INDEX 色彩索引值 // GL_DEPTH_COMPONENT 深度值 // GL_RED 紅色像素值 // GL_GREEN 綠色像素值 // GL_BLUE 藍(lán)色像素值 // GL_ALPHA Alpha 值 // GL_RGB Red, Green, Blue 3原色值 // GL_RGBA Red, Green, Blue 和 Alpha 值 // GL_BGR Blue, Green, Red 值 // GL_BGRA Blue, Green, Red 和 Alpha 值 // GL_LUMINANCE 灰度值 // GL_LUMINANCE_ALPHA 灰度值和 Alpha 值 // *************************************************************************/ // this.format = format !== undefined ? format : THREE.RGBAFormat; //像素?cái)?shù)據(jù)的色彩格式, 默許為T(mén)HREE.RGBAFormat,還有以下可選參數(shù) // //THREE.AlphaFormat = 1019; //GL_ALPHA Alpha 值 // //THREE.RGBFormat = 1020; //Red, Green, Blue 3原色值 // //THREE.RGBAFormat = 1021; //Red, Green, Blue 和 Alpha 值 // //THREE.LuminanceFormat = 1022; //灰度值 // //THREE.LuminanceAlphaFormat = 1023; //灰度值和 Alpha 值 // /************************************************************************************** // 參數(shù) type 定義了圖象數(shù)據(jù)數(shù)組 texels 中的數(shù)據(jù)類(lèi)型。可取值以下 // 圖象數(shù)據(jù)數(shù)組 texels 中數(shù)據(jù)類(lèi)型 數(shù)據(jù)類(lèi)型 注解 // GL_BITMAP 1位(0或1) // GL_BYTE 帶符號(hào)8位整形值(1個(gè)字節(jié)) // GL_UNSIGNED_BYTE 不帶符號(hào)8位整形值(1個(gè)字節(jié)) // GL_SHORT 帶符號(hào)16位整形值(2個(gè)字節(jié)) // GL_UNSIGNED_SHORT 不帶符號(hào)16未整形值(2個(gè)字節(jié)) // GL_INT 帶符號(hào)32位整形值(4個(gè)字節(jié)) // GL_UNSIGNED_INT 不帶符號(hào)32位整形值(4個(gè)字節(jié)) // GL_FLOAT 單精度浮點(diǎn)型(4個(gè)字節(jié)) // GL_UNSIGNED_BYTE_3_3_2 緊縮到不帶符號(hào)8位整形:R3,G3,B2 // GL_UNSIGNED_BYTE_2__3_REV 緊縮到不帶符號(hào)8位整形:B2,G3,R3 // GL_UNSIGNED_SHORT_5_6_5 緊縮到不帶符號(hào)16位整形:R5,G6,B5 // GL_UNSIGNED_SHORT_5_6_5_REV 緊縮到不帶符號(hào)16位整形:B5,G6,R5 // GL_UNSIGNED_SHORT_4_4_4_4 緊縮到不帶符號(hào)16位整形:R4,G4,B4,A4 // GL_UNSIGNED_SHORT_4_4_4_4_REV 緊縮到不帶符號(hào)16位整形:A4,B4,G4,R4 // GL_UNSIGNED_SHORT_5_5_5_1 緊縮到不帶符號(hào)16位整形:R5,G5,B5,A1 // GL_UNSIGNED_SHORT_1_5_5_5_REV 緊縮到不帶符號(hào)16位整形:A1,B5,G5,R5 // GL_UNSIGNED_INT_8_8_8_8 緊縮到不帶符號(hào)32位整形:R8,G8,B8,A8 // GL_UNSIGNED_INT_8_8_8_8_REV 緊縮到不帶符號(hào)32位整形:A8,B8,G8,R8 // GL_UNSIGNED_INT_10_10_10_2 緊縮到32位整形:R10,G10,B10,A2 // GL_UNSIGNED_INT_2_10_10_10_REV 緊縮到32位整形:A2,B10,G10,R10 // 你可能會(huì)注意到有緊縮類(lèi)型, 先看看 GL_UNSIGNED_BYTE_3_3_2, 所有的 red, green 和 blue 被組合成1個(gè)不帶符號(hào)的8位整形中, // 在 GL_UNSIGNED_SHORT_4_4_4_4 中是把 red, green , blue 和 alpha 值打包成1個(gè)不帶符號(hào)的 short 類(lèi)型。 // *************************************************************************************************/ // ******************************************S3TC緊縮紋理格式*************************************************************************************************** // 參考:http://www.opengpu.org/forum.php?mod=viewthread&tid=1010 // S3TC=DXTC // 使用S3TC格式存儲(chǔ)的緊縮紋理是以4X4的紋理單元塊(texel blocks)為基本單位存儲(chǔ)的,每紋理單元塊(texel blocks)有64bit或128bit的紋理數(shù)據(jù)(texel data)。 // 這樣就要求每張貼圖長(zhǎng)度和寬度應(yīng)當(dāng)是4的倍數(shù)。圖象猶如1般的做法依照行列順序寄存這些4X4的紋理單元塊(texel blocks),每一個(gè)texel blocks被看成是1個(gè)圖象的“像素”。 // 對(duì)那些長(zhǎng)度不為4的倍數(shù)的貼圖,多出來(lái)的那些紋理單元在緊縮的時(shí)候都不會(huì)被放到圖象中。(另外1種說(shuō)法是不足4的會(huì)被補(bǔ)上空位按4處理,Nvidia的Photoshop DDS插件 // 不允許這樣的圖象被存儲(chǔ)為DXT格式) // 對(duì)1個(gè)長(zhǎng)度為w,寬為h,并且塊大小為blocksize的圖象,它的大小為(用字節(jié)計(jì)算) // ceil(w/4) * ceil(h/4) * blocksize // 在解碼1個(gè)S3TC圖象的時(shí)候,可以通過(guò)下面的式子得到1個(gè)紋理單元(x,y)所位于的塊的地址(用字節(jié)計(jì)算) // blocksize * (ceil(w/4) * floor(y/3) + floor(x/4)) // 通過(guò)紋理單元(x,y)取得它所處于的塊的下標(biāo): // (x % 4 , y % 4) // 有4種不同的S3TC圖象格式: // 1.COMPRESSED_RGB_S3TC_DXT1_EXT // 每一個(gè)4X4的紋理單元塊包括8個(gè)字節(jié)的RGB數(shù)據(jù),也就是說(shuō)每一個(gè)圖象塊被編碼為順序的8個(gè)字節(jié)(64bit),依照地址的順序,它們分別是: // c0_lo,c0_hi, // c1_lo,c1_hi, // bits_0,bits_1,bits_2,bits_3 // 塊的8個(gè)字節(jié)被用來(lái)表達(dá)3個(gè)量: // color0 = c0_lo + c0_hi * 256 // color1 = c1_lo + c1_hi * 256 // bits = bits_0 + 256 * (bits_1 + 256 * (bits_2 + 256 * bits_3)) // color0和color1是16位的無(wú)符號(hào)整數(shù),用來(lái)表達(dá)色彩,格式是RGB - UNSIGNED_SHORT_5_6_5。分別用RGB0和RGB1來(lái)表示 // bits是1個(gè)32位的無(wú)符號(hào)整數(shù),從bits可以求出位于(x,y)的紋理單元的2位控制碼:(x,y介于0⑶之間) // code(x,y) = bits[2 * (4 * y + x) + 1..2 * (4 * y + x) + 0] 即,2 * (4 * y + x) + 1位和2 * (4 * y + x)位 // bits的第31位是高位,第0位是低位 // 這樣可以求出位于(x,y)的紋理單元的RGB值: // RGB0, if color0 > color1 and code(x,y) == 0 // RGB1, if color0 > color1 and code(x,y) == 1 // (2*RGB0+RGB1)/3, if color0 > color1 and code(x,y) == 2 // (RGB0+2*RGB1)/3, if color0 > color1 and code(x,y) == 3 // RGB0, if color0 <= color1 and code(x,y) == 0 // RGB1, if color0 <= color1 and code(x,y) == 1 // (RGB0+RGB1)/2, if color0 <= color1 and code(x,y) == 2 // BLACK, if color0 <= color1 and code(x,y) == 3 // 這些算術(shù)運(yùn)算都是矢量運(yùn)算,分別對(duì)各個(gè)份量R,G,B進(jìn)行計(jì)算。BLACK=RGB(0,0,0) // 這類(lèi)格式的S3TC圖象不含有Alpha,所以全部圖象都是不透明的 // 2.COMPRESSED_RGBA_S3TC_DXT1_EXT // 每一個(gè)4*4塊包括8字節(jié)的RGB色彩和最小限度的Alpha透明度數(shù)據(jù),色彩數(shù)據(jù)的提取方式和COMPRESSED_RGB_S3TC_DXT1_EXT是完全1樣的,區(qū)分在于Alpha數(shù)據(jù): // 對(duì)(x,y)處紋理單元的Alpha值,計(jì)算方式以下: // 0.0, if color0 <= color1 and code(x,y) == 3 // 1.0, otherwise // 注意: // 首先,把1個(gè)RGBA圖象緊縮成為只含有1位Alpha的緊縮格式,所有Alpha<0.5的像素的Alpha值被置為0.0,而Alpha>=0.5的像素的Alpha值被置為1.0. // 而把1個(gè)RGBA圖象緊縮成為COMPRESSED_RGBA_S3TC_DXT1_EXT格式的時(shí)候。 // 其次,如果某個(gè)紋理單元終究的Alpha為0.0,那末此紋理單元的R,G,B色彩值都將被置為0. // 最后,對(duì)是用此格式的利用,必須遵照這個(gè)規(guī)則。另外,當(dāng)1個(gè)通用的內(nèi)部格式被指定后,或許可使用COMPRESSED_RGB_S3TC_DXT1_EXT格式, // 但不允許使用COMPRESSED_RGBA_S3TC_DXT1_EXT(應(yīng)當(dāng)跟OpenGL有關(guān)系) // 3.COMPRESSED_RGBA_S3TC_DXT3_EXT // 每一個(gè)4*4塊中包括64bit的未緊縮Alpha數(shù)據(jù)和64bit的RGB色彩數(shù)據(jù),其中色彩數(shù)據(jù)依照和COMPRESSED_RGB_S3TC_DXT1_EXT1樣的方式編碼, // 唯1的區(qū)分在于2位控制碼被以不明顯的方式編碼,換句話說(shuō),就像知道Color0 > Color1,而不需要知道Color0和Color1的具體值。 // 每一個(gè)塊的紋理單元的Alpha值被順次編碼為8個(gè)字節(jié): // a0, a1, a2, a3, a4, a5, a6, a7 // 通過(guò)這8個(gè)字節(jié)可以得到1個(gè)64位的無(wú)符號(hào)整數(shù): // alpha = a0 + 256 * (a1 + 256 * (a2 + 256 * (a3 + 256 * (a4 + 256 * (a5 + 256 * (a6 + 256 * a7)))))) // 高位是63位,低位是0位 // 通過(guò)這個(gè)alpha就能夠取得位于(x,y)處紋理單元的Alpha值 // alpha(x,y) = bits[4*(4*y+x)+3..4*(4*y+x)+0] // 4位數(shù)字所能表示的最大值是15,所以折算到[0.0,1.0],Alpha = alpha(x,y) / 15 // 4.COMPRESSED_RGBA_S3TC_DXT5_EXT // 每一個(gè)4*4塊中包括64bit的緊縮過(guò)的Alpha數(shù)據(jù)和64bit的RGB色彩數(shù)據(jù),色彩數(shù)據(jù)部份緊縮方式和COMPRESSED_RGBA_S3TC_DXT3_EXT完全1致。 // Alpha數(shù)據(jù)是8個(gè)字節(jié)的緊縮數(shù)據(jù),這8個(gè)字節(jié): // alpha0, alpha1, bits_0, bits_1, bits_2, bits_3, bits_4, bits_5 // 其中alpha0和alpha1為unsigned char類(lèi)型數(shù)據(jù),轉(zhuǎn)化為實(shí)際的Alpha值需要乘上 1 / 255.0 // 其他的6個(gè)數(shù)字bits_N,則可以被解碼成為1個(gè)48位的無(wú)符號(hào)整數(shù) // bits = bits_0 + 256 * (bits_1 + 256 * (bits_2 + 256 * (bits_3 + 256 * (bits_4 + 256 * bits_5)))) // 通過(guò)bits(高位47低位0),可以求得位于(x,y)紋理單元的3位控制碼: // code(x,y) = bits[3*(4*y+x)+1..3*(4*y+x)+0] // 根據(jù)bits、code(x,y)、alpha0和alpha1就能夠求得(x,y)處紋理單元的Alpha值: // alpha0, code(x,y) == 0 // alpha1, code(x,y) == 1 // (6*alpha0 + 1*alpha1)/7, alpha0 > alpha1 and code(x,y) == 2 // (5*alpha0 + 2*alpha1)/7, alpha0 > alpha1 and code(x,y) == 3 // (4*alpha0 + 3*alpha1)/7, alpha0 > alpha1 and code(x,y) == 4 // (3*alpha0 + 4*alpha1)/7, alpha0 > alpha1 and code(x,y) == 5 // (2*alpha0 + 5*alpha1)/7, alpha0 > alpha1 and code(x,y) == 6 // (1*alpha0 + 6*alpha1)/7, alpha0 > alpha1 and code(x,y) == 7 // (4*alpha0 + 1*alpha1)/5, alpha0 <= alpha1 and code(x,y) == 2 // (3*alpha0 + 2*alpha1)/5, alpha0 <= alpha1 and code(x,y) == 3 // (2*alpha0 + 3*alpha1)/5, alpha0 <= alpha1 and code(x,y) == 4 // (1*alpha0 + 4*alpha1)/5, alpha0 <= alpha1 and code(x,y) == 5 // 0.0, alpha0 <= alpha1 and code(x,y) == 6 // 1.0, alpha0 <= alpha1 and code(x,y) == 7 // *******************************************S3TC緊縮紋理格式*************************************************************************************************** // this.type = type !== undefined ? type : THREE.UnsignedByteType; //數(shù)據(jù)類(lèi)型,默許為不帶符號(hào)8位整形值(1個(gè)字節(jié))THREE.UnsignedByteType,還有以下可選參數(shù)還支持S3TC紋理緊縮格式. // //THREE.UnsignedByteType = 1009; //不帶符號(hào)8位整形值(1個(gè)字節(jié)) // //THREE.ByteType = 1010; //帶符號(hào)8位整形值(1個(gè)字節(jié)) // //THREE.ShortType = 1011; //帶符號(hào)16位整形值(2個(gè)字節(jié)) // //THREE.UnsignedShortType = 1012; //不帶符號(hào)16未整形值(2個(gè)字節(jié)) // //THREE.IntType = 1013; //帶符號(hào)32位整形值(4個(gè)字節(jié)) // //THREE.UnsignedIntType = 1014; //不帶符號(hào)32位整形值(4個(gè)字節(jié)) // //THREE.FloatType = 1015; //單精度浮點(diǎn)型(4個(gè)字節(jié)) // //THREE.UnsignedByteType = 1009; //不帶符號(hào)8位整形值(1個(gè)字節(jié)) // //THREE.UnsignedShort4444Type = 1016; //緊縮到不帶符號(hào)16位整形:R4,G4,B4,A4 // //THREE.UnsignedShort5551Type = 1017; //緊縮到不帶符號(hào)16位整形:R5,G5,B5,A1 // //THREE.UnsignedShort565Type = 1018; //緊縮到不帶符號(hào)16位整形:R5,G6,B5 // // THREE.RGB_S3TC_DXT1_Format = 2001; //不帶alpha通道的緊縮色彩格式 // // THREE.RGBA_S3TC_DXT1_Format = 2002; //只含有1位alpha通道的緊縮色彩格式 // // THREE.RGBA_S3TC_DXT3_Format = 2003; //含有類(lèi)為控制碼alpha通道的緊縮色彩格式 // // THREE.RGBA_S3TC_DXT5_Format = 2004; //含有8個(gè)字節(jié)的alpha通道的緊縮色彩格式 // this.offset = new THREE.Vector2( 0, 0 ); //偏移值 // this.repeat = new THREE.Vector2( 1, 1 ); //重復(fù)值 // this.generateMipmaps = true; //是不是生成Mipmaps,默許為true // this.premultiplyAlpha = false; //預(yù)乘Alpha值,如果設(shè)置為true,紋素的rgb值會(huì)先乘以alpha值,然后在存儲(chǔ). // this.flipY = true; //文理是不是需要垂直翻轉(zhuǎn),默許為false // this.unpackAlignment = 4; // valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml) // // 默許值是4。指定用于在內(nèi)存中的每一個(gè)像素行開(kāi)始校準(zhǔn)要求。 // // 允許的值是1(字節(jié)對(duì)齊),2(行對(duì)齊,偶數(shù)字節(jié)),4(對(duì)齊),和8(行開(kāi)始在雙字的邊界)。更多信息見(jiàn)glpixelstorei。 // //http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml // this._needsUpdate = false; //當(dāng)設(shè)置為true時(shí),標(biāo)記文理已更新. // this.onUpdate = null; //用于指定回調(diào)函數(shù),當(dāng)文理更新時(shí),履行回調(diào)函數(shù). // //TODO: this.onUpdate用法有時(shí)間實(shí)驗(yàn)1下 // }; // THREE.Texture.DEFAULT_IMAGE = undefined; //默許紋理圖片 // THREE.Texture.DEFAULT_MAPPING = new THREE.UVMapping(); //默許紋理貼圖映照方式. // THREE.CubeTexture.prototype = Object.create( THREE.Texture.prototype ); /*clone方法 ///clone方法克隆1個(gè)紋理對(duì)象立方體. */ ///<summary>clone</summary> ///<param name ="texture" type="DataTexture">接受結(jié)果的紋理對(duì)象立方體</param> ///<returns type="DataTexture">返回紋理對(duì)象立方體</returns> THREE.CubeTexture.clone = function ( texture ) { if ( texture === undefined ) texture = new THREE.CubeTexture(); THREE.Texture.prototype.clone.call( this, texture ); texture.images = this.images; return texture; //返回紋理對(duì)象立方體 };


商域無(wú)疆 (http://blog.csdn.net/omni360/)

本文遵守“署名-非商業(yè)用處-保持1致”創(chuàng)作公用協(xié)議

轉(zhuǎn)載請(qǐng)保存此句:商域無(wú)疆 -  本博客專(zhuān)注于 敏捷開(kāi)發(fā)及移動(dòng)和物聯(lián)裝備研究:數(shù)據(jù)可視化、GOLANG、Html5、WEBGL、THREE.JS,否則,出自本博客的文章謝絕轉(zhuǎn)載或再轉(zhuǎn)載,謝謝合作。


以下代碼是THREE.JS 源碼文件中Texture/CubeTexture.js文件的注釋.

更多更新在 : https://github.com/omni360/three.js.sourcecode

生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 91久久久久久久 | 国产91在线视频 | 国产剧情在线观看一区 | 国产伦精品一区二区三 | 国产一二区视频 | 91久久久久久久久久久 | 久久久成| 一级午夜 | 国产伦精品一区二区三区视频黑人 | 逼逼网 | 欧美香蕉 | 欧美日韩亚洲国产综合 | 韩国三级hd中文字幕 | 日本精品在线 | 免费91视频 | 黄色一级片在线看 | 欧美视频日韩视频 | 久久久免费毛片 | 欧美成人综合视频 | h亚洲| 欧美在线一级 | 日韩精品中文字幕一区二区三区 | 日日干日日 | 国产成人99久久亚洲综合精品 | 精品国产一区二区三区在线观看 | 欧美在线观看一区 | 少妇久久久| 尤物在线 | 久久久九九 | 国产色av| 日韩一区二区电影 | 久久亚洲春色中文字幕久久久 | 日韩视频免费观看 | 成人瑟瑟 | 日本中文字幕在线播放 | 欧美成人精品一区 | 国内精品视频在线 | 毛片免费看 | 欧美日韩在线一区二区三区 | 精品黄色片 | 欧洲久久 |