2016-03-07 63 views

回答

1

由於這個API的工作原理,它可能會在調整大小時創建一個新的幀緩衝區。這可以通過自定義視圖來實現,因此「不要使用GLKView」將會是一個答案。縮放自定義視圖綁定到OpenGL時,縮放顯示縮放時會產生錯誤的分辨率。

你對自己在做什麼的信息太少了,但總的來說,這看起來像是在openGL中使用滾動視圖。我已經通過在繪製視圖的頂部添加滾動視圖並且然後監聽其交互(滾動,縮放)來實現這樣的系統。然後我計算了滾動視圖內容視圖的可見矩形,並在openGL投影矩陣中使用了相同的矩形。這只是簡單地呼叫ortho帶有可見的幀參數。

因此,一般來說,您不應該簡單地嘗試縮放,縮放您渲染的視圖,因爲您需要更大的緩衝區。當從視圖創建緩衝區時,它將與視圖本身相同,並乘以您設置的內容比例(@ 2x,@ 3x)。因此,縮放時實際縮放視圖,然後應調整大小以適應需要時間的新大小。但是如果你不調整它,你會失去決議。所以從我看到的改變投影矩陣的方式來說,它很可能從滾動視圖傳輸數據,所以你得到所有的彈跳效果等。

如果您已經在使用顯示鏈接(不管交互作用如何重繪視圖),那麼就不需要監聽滾動視圖事件。您只需在您繪製的每個幀上獲取滾動視圖的可見矩形。這將剝離一些代碼。