2014-10-04 57 views
1

爲什麼SpriteKit使用浮動位置,即使像素中沒有小數點?浮動SpriteKit

我在SpriteKit中構建了一個遊戲,我在想是否應該在int中對角色位置進行優化,但我不確定是否會有任何性能改進。

是否值得將字符位置轉換爲整數以優化?

+0

誰說整數比浮動速度快?自90年代後期以來,浮動算法已經(幾乎)在同等水平的表現上明智。只有在(集成的)FPU處理器進行浮動操作之前,纔會非常緩慢。 – LearnCocos2D 2014-10-04 08:05:25

+0

有沒有像素,但點。在視網膜上顯示一個點可以超過一個像素,所以即使是小數點也應該被考慮。 – 2017-05-26 11:50:24

回答

13

一般來說,在處理比特旋轉級別以上的圖形時,使用浮點數比整數更簡單。請注意,Core Graphics也使用浮點數作爲座標。

它更簡單的原因是你想要做比例縮放(通過非整數因子)並旋轉座標,圖像,路徑等。如果使用整數,舍入誤差會快速累積顯着量。如果你使用花車,四捨五入錯誤需要很長時間纔會變得明顯 - 通常它們根本不會變得明顯。

還認爲SKNode具有xScaleyScale屬性。如果按比例放大節點,其小孩位置的小數部分可能對屏幕上的位置產生很大影響。

你不應該將你的角色位置轉換爲整數。 SpriteKit使用浮點數,所以你最終會將它們轉換回浮點數以便在SpriteKit中使用它們,CPU具有浮點支持,並且GPU被設計用於執行大量的浮點運算。

+0

此外還增加了IOS工作點而不是像素的事實,其中一個點可以包含多個像素。因此,根據設備,一個像素將小於1。 – BadgerBadger 2017-04-09 03:10:52

0

SpriteKit使用浮點數,因爲浮點數並不是那麼大,並且您使用的數字也不會那麼大,因爲iPad本身的最大尺寸本身是2048到1536,因此無需將它們聲明爲整數花車對這些尺寸的工作很好。

轉換爲整數沒有用處。我在SpriteKit中製作了一款遊戲,使用CGFloats可以很好地工作。

如果您轉換爲整數,請注意幾乎所有處理精靈圖像或對象大小的東西都會浮動。

0

其他答案很好,但請記住,您不是以像素爲單位工作的:您正在以點數工作。根據設備的不同,點數會保持更多或更少的像素。這背後的原因是爲了適應具有節省物理尺寸的視網膜顯示器。您可以使用點數,並且當您添加像素時,由於每個點的像素數量增加,所有數據仍然排列整齊,但屏幕中的點數保持不變。