除非有比API更快速的演算否則請善用底層API
以下將會慢慢紀錄收集下去
養成習慣
- 當你對API不熟時,養成一種習慣,遇到問題實,可以先看API文件,別急著實作演算出來。
- 有些API演算效能不好,這些需要經驗,如Math系列的取絕對值,這些是可以在網路上搜尋。
- 這些都是可以做實驗驗證的。
- API利用得當將使你少寫很多碼,也使你程式簡潔許多。
計算兩點距離
Point.distance(pt1, pt2);
String的API應用得好遠比你自己寫for迴圈還快,內層API是開發flashPlayer的語言寫出來的,若你用AS3來跑等於多了一層包覆,將會慢了許多。
//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 程式碼如下