2011年3月28日 星期一

善用API

除非有比API更快速的演算否則請善用底層API
以下將會慢慢紀錄收集下去


養成習慣

  • 當你對API不熟時,養成一種習慣,遇到問題實,可以先看API文件,別急著實作演算出來。
  • 有些API演算效能不好,這些需要經驗,如Math系列的取絕對值,這些是可以在網路上搜尋。
  • 這些都是可以做實驗驗證的。
  • API利用得當將使你少寫很多碼,也使你程式簡潔許多。

計算兩點距離
 Point.distance(pt1, pt2);



String的API應用得好遠比你自己寫for迴圈還快,內層API是開發flashPlayer的語言寫出來的,若你用AS3來跑等於多了一層包覆,將會慢了許多。

Pixel Bender RGB 調整Demo

//Pixel Bender 檔名 RGB.pbj

<languageVersion : 1.0;>
kernel RGBFilter
<   namespace : "jt.com.tw";
    vendor : "jt";
    version : 1;
    description : "";
>
{
    input image4 src;
    output pixel4 dst;
    //parameter的<>是可無的,有的話是限制輸入數值
    parameter float amount
    <
     minValue: 0.0;
     maxValue: 1.0;
     defaultValue: 0.5;
    >;
    parameter float red
    <
    minValue: -1.0;
    maxValue: 1.0;
    defaultValue: 0.0;
    >;
    parameter float green
    <
    minValue: -1.0;
    maxValue: 1.0;
    defaultValue: 0.0;
    >;
    parameter float blue
    <
    minValue: -1.0;
    maxValue: 1.0;
    defaultValue: 0.0;
    >;
    
    void
    evaluatePixel()
    {       
        //取樣32bit       
        //old method
        dst = sampleNearest(src,outCoord());       
        dst.r +=  (red*amount);
        dst.b +=  (green*amount);
        dst.g +=  (blue*amount);        
    }
}
//Flex 程式碼如下