2010年2月15日 星期一

Jitter Tutorial 34 Using Texture 摘要

  • 在 Jitter 中,貼圖本身有名稱,且隸屬於 jit.gl.render ,但其他使用相同繪圖目標之3D 繪圖物件也可以使用這些被命名的貼圖。考量運算的效率,貼圖來源的維度必須是由 2 的次方所構成(如 16, 32, 64 等)。貼圖最小的維度為 1 x 1,最大維度為 1024 x 1024。貼圖也可調整 ARGB 數值,若要使 alpha 數值產生作用,則 jit.render 的 blending 的功能必須被開啟。(在 jit.render 上下 blend_enable 1 指令)。(p.299-230)
  • jit.gl.plato 可用來製造柏拉圖多面體(柏拉圖多面體每面均由全等的正多邊形所組成,且要求每個頂點的組態一致;為"凸"的正多面體,共有正四面體( Tetrahedrron ) , 正六面體( Hexahedrron 或 Cube ) , 正八面體 ( Octahedrron ), 正12 面體 ( Dodecahedrron ), 正 20 面體(Icosahedrron )等五個。配合使用 texture [圖形或影片名稱] 指令,可用來將 jit.plato 所製造的 3D 物件加上隸屬於 jit.gl.render 的貼圖。(p.230)
  • 連接 jit.gl.render 的 "texture [貼圖名稱] " 指令與連接 jit.gl.plato 的 "texture [貼圖名稱] " 指令意義不同,前者則是為 jit.gl.render 製造一個貼圖,後者是用來套用貼圖到柏拉圖多面體上。此外,連向 jit.gl.render 的 usetexture 指令,則是用來產生 raw geometry data 以 jitter matrix 的方式傳送 (參考 tutorial 37)。(p.301)
  • 當套用貼圖到 3D 幾何圖形上時, OpenGL 也會同時考量顏色與燈光,原本的顏色與燈光數值,會與貼圖本身的數值相乘。若原本的顏色為白色,燈光也被關閉的情況下,被套用的貼圖則不會改變顏色。(p.302)
  • 要在 3D 幾何圖形上加上影片或圖檔作為貼圖,可使用 jit.qt.movie 讀取貼圖,並且將所產生的陣列在前端加上 texture [貼圖名稱] 指令 (使用 prepend 物件),送往 jit.gl.render;若貼圖只是圖檔而非影片,則不需用 metro 重複送 bang,只需使用 "read [圖檔名稱], bang" 指令於 jit.qt.movie 上。此外,貼圖維度設定的指令 texture [貼圖名稱] [貼圖維度],也需送往 jit.gl.render。(事實上,完整的指令格式為 "texture [貼圖名稱] jit_matrix  [陣列名稱]")。若 jit.qt.movie 所送的貼圖之名稱已先被使用,則 jit.gl.render 會以之前的貼圖維度,針對 jit.qt.movie 所傳來的新貼圖重新取樣。若貼圖名稱尚未被使用過,則 jit.gl.render 會製造出新的貼圖,使用比 jit.qt.movie 所傳來貼圖大一些、或相等維度大小之最接近的二的整數次方維度作為 jit.gl.render 的貼圖維度。(p.302-303)
  • jit.gl.render 預設值中,interpolation 是被開啟的,用來柔化貼圖,可用 interp 0 關閉柔化功能,但只針對目前正在使用中的貼圖有效。若要指定要關閉哪一個貼圖的柔化效果,則可使用 "usetexture [貼圖名稱], interp 0" 為之。
  • jit.gl.redner 所使用的貼圖之維度可以 "texture [貼圖名稱] [貼圖維度]" 修改之。若欲清除記憶體中的貼圖,則可用 "deletetexture [貼圖名稱]" 為之。(p.304)
  • tex_map $1 指令用來選擇是否使用 explicit texutre mapping mode (0) 或 三種 (1-3) implicit texture mapping mode (object liner, eye linear, sphere map)。其中 mode 1 與 3 會受到 " tex_plane_t $1, $2, $3, $4" 與 "tex_plane_s $1, $2, $3, $4" 的餐數值影響。(細節與定義請參照 p.304)

沒有留言:

張貼留言