2011年4月14日 星期四

PHP字串連接

PHP中字串連接是使用點 .

<?php 
$stringA = "Hello World" ;
$stringB = " JT"; 
echo $stringA . $stringB;
 ?>

Java & C# & Actionscript 可使用 + 運算子來連接字串

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 程式碼如下

2011年3月26日 星期六

Pixel Bender 核心規格 - Kernel metadata

Kernel的後設標籤(Kernel metadata)
原文:
The first portion of the kernel definition is the kernel metadata, a series of name-value pairs enclosed in angle brackets:
  • 第一部分定義的是kernel的metadata部分,由一系列的name:value構成。
<
 name1 : value1;
 name2 : value2;
 ...
>;

Pixel Bender 核心規格 - Kernel Syntax

核心語法(Kernel Syntax)
  • Pixel Bender Kernel Syntax是由<>加上一些字串所組成。
<languageVersion : 1.0;>
 kernel name
<
 kernel metadata pairs
>
{
 kernel members
}
原文:
Every kernel must begin with the languageVersion statement, which identifies the version of the Pixel Bender kernel language in which this kernel is written, followed by the kernel definition.
  • 每一個核心需要在languageVersion中宣告Pixel Bender Kernel語言的版本。

使用Piex Bender 運行在Flash Player上注意事項

Using Pixel Bender with Flash Player
將Piex Bender使用在Flash Player上需注意:

原文:
  1. The preprocessor symbol AIF_FLASH_TARGET is defined to be 1.
  2. Flash Player always uses 1x1 square pixels. The function pixelSize() always returns (1.0, 1.0), and pixelAspectRatio() always returns 1.0.
  3. The selection operator (?:) can be used only to select between two constants or variables.
  4. Pixel Bender images have 32 bits per channel, but graphics in Flash Player 10 have only 8 bits per channel. When a kernel is run in Flash Player, the input image data is converted to 32 bits per channel and then converted back to 8 bits per channel when kernel execution is complete.
  5.  The only available flow-control statements are if and else.
  6. The following are not supported:
   Region functions .
   Custom support functions and libraries.
   Dependent values.
   Arrays.
   The Pixel Bender graph language.
  1. 預先處理符號 AIF_FLASH_TARGET 需被定義為1。
  2. Flash Player只會使用 1x1方形像素。pixelSize()總是回傳(1.0,1.0)而 pixelAspectRatio() 總是回傳1.0。
  3. 運算子 ?:只能用於選擇常數或是變數。
  4. Pixel Bender圖像每一通道有32bit,但圖形在Flash Player 10每通道只有8bit。當Kernel運行在Flash Player時,輸入圖像的資料將轉換成每通道32bit,當kernel執行完成將會轉回成每通道8bit。
  5. 用於Flash Player上時,流程控制只能使用if 與 else
  6. 下列是不支持的
  Region函式。
  客制化函式與類別庫。
  Dependent values。
  陣列。
  Pixel Bender的圖形語言。


Pixel Bender 簡介

Pixel Bender簡介
Pixel Bender核心語言是一種C語言的延伸,使用於圖像處理。他是基於GLSL,而GLSL又是基於C語言的,任何C語言的程式員因該會很熟悉。如果你有OpenGL/GLSL的背景你會發現一個Pixel Bender的程式,他類似一個fragment shader(片段著色器)。

  • Pixel Bender一定要有一個evaluatePixel() function,運行是由此開始的。
Piexl Bender 執行時期引擎是集成客戶端的應用,能將Piexl Bender引入Photoshop 、After Effects、Flash Player。
  • Piexl Bender編寫好程序後可以存成PBK檔,這個PBK檔可以用於Photoshop、After Effects。
  • PBK編譯後成為PBJ能用於Flash Playerm。