簡體   English   中英

Autocad如何快速平移和縮放?

[英]How can be Autocad so fast to pan and zoom?

我正在開發一個圖像查看器,其中圖形使用抗鋸齒模式呈現。 可以使用生成DXF文件的Autocad首先編輯圖像。

該應用程序是使用Visual C ++和Direct2D編寫的。

雖然我能夠非常快速地加載圖像,但是與相同圖像(相同數量的形狀)的Autocad性能相比,變焦和特別是平移對我來說仍然是一個問題。

以下是旨在呈現圖形的一段代碼:

auto shapes = quadTree.get_visible_shapes();
shapes.sort_by_Zorder();

for each shape in shapes:
   shape.draw();

在分析之后,我可以說超過90%的計算時間花在循環中旨在繪制形狀。

由於四叉樹的實施,僅繪制可見形狀,已經取得了巨大的性能提升; 我還在平移時以亂碼模式渲染圖形,但與Autocad仍然存在很大差異。

我想知道Autocad是否繪制了圖像的位圖表示,即使我沒有嘗試這種方法,所以我不知道是否可以有效地提高速度。

考慮到這些假設是否有任何方法可以改善平移和縮放的動作?

在2D / 3D場景上進行平移時幾乎沒有考慮因素,特別是當重繪世界很昂貴時。

  1. 離屏帆布

    將屏幕渲染到具有稍大畫布的屏幕外位圖(例如w + N * h + N),在PAN上立即顯示屏幕,並在后台更新屏幕外屏幕。 還有很多方法可以進一步優化這個方向。

    編輯:更多細節:

    例如,場景的屏幕為640x480,場景本身為1000x1000,您要顯示區域(301,301)〜(940,780)。 你寧願用(251,251)〜(990,830)創建一個離屏緩沖區,例如740x580(即N = 50)。 因此,如果PAN操作移動小於50像素(例如PAN留下5個像素),您已經有這樣的內容立即渲染到屏幕。 此外,在PAN之后,您可能希望在后台(或空閑時)准備新的屏幕外緩沖區,以便可以立即執行后續PAN。 如果PAN太遠,您仍然需要等待它,或者降低中間屏幕的渲染質量,並且僅在PAN停止時呈現完整的細節 - 用戶在移動時不會注意到細節。

  2. 限制更新頻率

    PAN操作通常由鼠標(或手勢觸摸)觸發,這可能在大量事件時發生。 而不是在一秒鍾內將所有20個鼠標移動事件排隊並花費3秒鍾重繪世界20次,您應該限制更新頻率。

在AutoCAD中,有一種稱為自適應降級的機制,當FPS低於預定義值時,該機制將中止渲染:

適應性退化

而且還有很多優化。 你無法與這樣的大型項目競爭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM