我應該爲頂點數據使用哪種類型的浮點數?有一堆可供選擇。 Glfloat,float,float32等在swift OpenGL中使用哪種類型的float?
回答
iOS GPU硬件對單精度浮點數據效果最佳。此外,許多高級庫(例如GLKit,SceneKit)使用包含32位浮點數的數據結構作爲向量,矩陣等。
至於要使用哪種類型的名稱,請記住Swift不會執行自動類型轉換。因此,在C中,您可以在代碼中使用float
值並將它們傳遞給OpenGL API,但在Swift中,您必須將它們隱式轉換爲由API使用的類型(使用GLfloat(value)
)。最好只使用GLfloat
作爲自己的數據,所以你不必插入轉換。
即使您僅開發Apple平臺(因爲您使用的是Swift),使用GLfloat
也可以確保您使用OpenGL規範要求的任何數據類型 - 如果使用其他類型名稱爲了今天指定相同的數據大小/格式,您將依靠這個名稱來發現未來的意義。 (當然,這些特定的Swift數據類型似乎並不是所有可能改變的,但總的來說,最好依靠明確的API合同而不是隱式匹配。)
事實上,在iOS上有一個類型:'CGFloat',Apple編寫的一些示例軟件使用...如果您的目標是64位版本的iOS,則此類型爲64位雙精度,否則是32位單精度。蘋果公司自己假設這種類型在寫他們的示例代碼時總是會是單精度的32位。不用說,如果您將一個指向'CGFloat'的指針傳遞給一個需要'GLfloat'的函數,那麼OpenGL ES並不一致:P – 2014-10-27 21:55:49
對於OpenGL,在這種情況下,您應該使用OpenGL數據類型 - GLfloat
,因爲它們保證是GL實現在每個平臺上使用的正確類型。實際上,在幾乎所有情況下,GLfloat
都將是32位單精度浮點格式。
- 1. 我使用哪種Swift數據類型用於貨幣
- 2. Paint.setTextSize(float)使用哪種度量單位?
- 3. Swift OpenGL類型轉換
- 4. 要使用哪種類型的連接?
- 5. 哪種類型的訂閱使用?
- 6. Swift泛型 - 調用哪種方法?
- 7. 要使用哪種數據類型?
- 8. FeedBurner使用哪種鏈接類型SmartFeed
- 9. mysql ---我應該使用哪種類型?
- 10. 要使用哪種加入類型?
- 11. 要使用哪種集合類型?
- 12. 要使用哪種重定向類型?
- 13. UserPrincipal.FindByIdentity使用哪種默認IdentityType類型?
- 14. 如何確定在Postgres中使用哪種類型的索引?
- 15. Swift中的多種索引類型
- 16. 哪種類型的Eclipse
- 17. 在java中使用哪種數據類型?
- 18. 如何確定在工會中使用哪種類型?
- 19. 哪種數據類型在gorm中使用時間?
- 20. Codeigniter中的哪種類型驗證?
- 21. Python 3用類型()識別float float()
- 22. ECMA-404中使用哪種類型的圖表?
- 23. 如何在Qt OpenGL中應用glPointSize(float)?
- 24. 如何檢查哪種功能使用某種類型?
- 25. OpenGL VBO:Short or Float?
- 26. 使用未知數據類型FLOAT
- 27. 在Django中選擇哪種類型的模型繼承
- 28. 在OpenLDAP中爲分組用戶選擇哪種類型的組
- 29. JAVA中應該使用哪種數組類型,爲什麼?
- 30. swift中未使用的類型參數
它們將全部相同(每個類型都有相同的typedefed其他)大部分時間 – 2014-10-27 21:27:24