我試圖在我的遊戲場景的構造函數中同時加載所有遊戲數據。但是它失敗了,因爲紋理加載只能在opengl上下文中工作,就像從draw frame或surfacechanged調用load方法一樣。但是我認爲在並條機首次調用或類似的東西時加載紋理是很難看的。那麼是否有可能將我的加載部分與opengl函數分開?隨機加載紋理
Q
隨機加載紋理
1
A
回答
3
我有完全相同的問題。 我的解決方案是使用proxy textures。這意味着,當您使用內存或文件中的某些數據創建紋理時,您將創建包含該內存數據或文件路徑副本的虛擬紋理(您可以將數據預加載到內存中以加快載入速度)。
之後,我的渲染器調用bind()(這與glBindTexture類似),我檢查是否有數據要加載,如果存在,我只是創建新的紋理並加載數據。
這種方法最適合我,因爲在我的情況下紋理可以從任何線程和任何時候創建。
但是如果你想預加載所有紋理你可以做,在onSurfaceCreated
或onSurfaceChanged
這同樣適用於緩衝區。
另一種方法是使用本地活動(檢查NDK示例)。在這種情況下,您可以手動處理上下文,但它需要API級別9.
1
但我覺得在並條機首次調用或類似的東西時加載紋理是很難看的。
實際上,延遲紋理加載是最優雅的方法。這是允許遊覽世界而不中斷加載屏幕的遊戲的關鍵要素之一。只是不要試圖一次加載整個世界,而是儘快加載它們即將變得可見的東西。使用像素緩衝區對象異步執行操作。
相關問題
- 1. XNA中的隨機紋理
- 2. 紋理加載
- 3. DDS紋理加載
- 4. Three.js紋理加載
- 5. JOGL紋理加載
- 6. 加載紋理LWJGL
- 7. 可以使用隨機紋理ID嗎?
- 8. C++/OpenGL/GLSL,紋理與「隨機」文物
- 9. Popup隨機加載
- 10. Java - LWJGL加載紋理,僅加載我加載的最新紋理
- 11. 緩慢的紋理加載
- 12. 用JSONloader加載紋理
- 13. 在three.js中加載紋理
- 14. 瞭解andengine紋理加載
- 15. onProgress與Three.js紋理加載
- 16. javascript爲webgl加載紋理
- 17. unity3d中預加載紋理
- 18. Direct3d9加載紋理失敗
- 19. opengl es 2.0紋理加載
- 20. 紋理加載和映射
- 21. Three.js - 無法加載紋理
- 22. 顯示加載的紋理
- 23. Three.js紋理加載失敗
- 24. 加載多個紋理openGL
- 25. 使用DirectXTex加載紋理
- 26. Android:OpenGL重新加載紋理
- 27. WebGL - 等待紋理加載
- 28. 在Init中加載紋理()
- 29. 無法加載紋理
- 30. Three.js JSONLoader;紋理未加載