嘿傢伙,
我一直在ActionScript 3中編寫一個光線投射引擎,我一直在得到一些糟糕的表現。
起初我認爲這是顯而易見的:光線投射是數學密集型的,因爲涉及複雜的數學運算,我必須得到較低的幀速率,但是令我驚訝的是,事實證明情況並非如此;看起來,繪製牆壁的for-loop是原因。
我試着用我的代碼進行試驗,發現當我註釋掉for循環時,FPS更加加倍,但是當我取消註釋for循環但留下圖形代碼評論FPS減半時。
ActionScript是否真的很慢,簡單的循環本身應該消耗太多的CPU時間?如何加快ActionScript中的循環?
感謝您的任何意見!
這裏是有問題的代碼(Quck注:COLUMN_SIZE只是定義爲1的常數):
var y:int = 0;
var x:int = 0;
var rx:int = 0;
for(x = 0; x < COLUMN_SIZE; x++) {
yt = ys;
rx = x + sx;
for(y = yTop; y < yBot; y++) {
var idx:int = int((stage.stageWidth*y)+rx);
pBuffer[idx] = getTexturePixel(ray.tile-1, ray.texel, int(yt), ray.horz);
yt += yi;
}
}
什麼是其餘的類型(yt,rx,yTop,yBot等)? – mpdonadio 2011-03-08 20:06:57
@MPD這更多的是關於循環本身。速度大大減慢,甚至如果我註釋掉與getTexturePixel行了,但這裏的功能是:'函數getTexturePixel(索引:INT,X:INT,Y:INT,陰影:布爾= FALSE):UINT { \t \t var clr:uint; \t \t 如果(指數> = 0 &&指數
JamesK89
2011-03-08 20:24:48
這並沒有真正回答我的問題。循環/代碼中其他變量的類型是什麼?混合整數和數字可能會導致性能問題。 – mpdonadio 2011-03-08 20:30:11