映射紋理時使用mipmap可以提高渲染速度並減少僞像。最近,我寫了一個測試平臺來描述3D圖形的功耗,我發現當我使用mipmap技術時,應用程序會消耗更多的能量!這是合理的嗎? 而且,性能是否與映射到對象的映像大小有關係?是否使用mipmap技術繪製紋理可以節省能源?
1
A
回答
4
這聽起來令人驚訝,你會看到用mipmapping增加功耗。但有可能的解釋爲什麼在某些情況下會發生這種情況。
一個方面是採樣紋理貼圖紋理需要讀取更多的紋元。對於三線濾波,您需要8個紋理像素,而對於非紋理貼圖紋理,您只需要4個像素就可以進行雙線性採樣。所以mipmapping需要兩次紋理讀取。
紋理採樣單元必須爲三線性插值做更多的工作。在這種情況下,不確定一個典型的採樣單元是否會消耗更多的能量,但似乎是可能的。
在不利的情況下,mipmapping實際上可能需要更多的內存帶寬。假設您對使用整個紋理的多邊形進行採樣,並且紋理略微縮小,因此LOD例如爲0.5。在這種情況下,您需要讀取0級和全部1級的全部數據。與非mipmapping案例中的讀取0級相比,這要多25%。
很明顯,生成mipmap還會使用電源。但只要你這樣做了一次,然後多次使用這個紋理,它就不會有太大影響。
除了質量的考慮,總體思路當然是mipmapping會更有效率,因此使用更少的權力。在較高的LOD值(即更小的縮小比例)下,我肯定會期望這會起作用,因爲內存帶寬要求會更低。換句話說,緩存命中率會更高。
總之,我的理論是,如果您主要是在低LOD值下進行採樣,則mipmapping可能會使用更多的功率,而在高LOD值下,它將更具功率效率。
相關問題
- 1. iOS:是否可以使用動畫技術來處理MFMailComposeViewController?
- 2. FBO和mipmap紋理
- 3. 此紋理共享技術是否可以在我的通用iOS應用中使用?
- 4. 在OpenGL中使用MipMap紋理
- 5. 使用D3D9繪製紋理
- 6. WebGL - drawElements:紋理是非功率紋理或不是mipmap完成
- 7. 是否可以使用Java後端和Web技術UI
- 8. 剝離劑技術是否可以提高性能?
- 9. LibGDX紋理可繪製?
- 10. AndEngine紋理可繪製
- 11. 我可以限制Bing Autosuggest API只提供技術技能嗎?
- 12. 使用紋理數組構造PVRTC mipmap紋理?
- 13. 是否有任何技術可以指示html select元素是否被「使用」?
- 14. 製作HTML繪圖應用程序可節省您的繪圖
- 15. 是否可以使用自定義mipmap大小?
- 16. Threejs繪製紋理
- 17. 紋理不繪製
- 18. 什麼技術需要可變紋理存儲
- 19. 是否有可能重定向用戶登錄後使用客戶端技術
- 20. 是否可以使用python matplotlib垂直繪製一個繪圖?
- 21. DirectX 10將紋理繪製到紋理
- 22. 從紋理使用alpha繪製純色
- 23. 使用OpenGL ES繪製紋理
- 24. Threejs - 使用MeshDepthMaterial繪製透明紋理
- 25. 使用libgdx繪製紋理多邊形
- 26. Android繪製紋理擴展繪製白色紋理
- 27. 將可繪製資源加載到紋理並呈現它
- 28. 使用framebuffer繪製紋理貼圖(紋理空白)
- 29. 使用紋理對象繪製JOGL的基本紋理
- 30. OpenGL不能同時繪製紋理和非紋理四邊形
但是,如果不使用三線(或各向異性)過濾,會怎麼樣? – flodin
然後我的大部分可能的解釋都不適用。但是沒有至少三線過濾的mipmapping似乎不是很有用。你不會得到不好的文物嗎? –
卡片切換LOD等級時,您可以獲得輕微的爆裂效果。但這是三線過濾變得足夠便宜之前完成的方式。 – flodin