2011-03-20 40 views
3

我的應用程序「Guess-A-Sketch」在ios 4.3中有畫圖問題。我有一個畫黑色的畫布。奇怪的是我發現,如果我調整ogl視圖的框架大小略有似乎工作..我在appstore中的版本不起作用,所以我必須做一個更新來修復..雖然它看起來像一個錯誤。任何人看到這個?很煩人!即使我的框架調整修複視圖閃爍黑色時,我已經在以前的ios版本平滑的視圖上的動畫變換爲什麼我的OpenGL ES視圖有時在iOS 4.3上空白?

回答

2

您可能遇到this answer中提到的問題。在iOS 4.2中,渲染緩衝區的處理方式已經改變,以提高性能。從OpenGL ES Programming Guide

在iOS系統4.2和更高版本,性能 renderbuffers核心動畫旋轉 有顯著一直 改善,現在旋轉之間 風景和肖像模式內容的首選方式 。爲獲得最佳 性能,請確保渲染緩衝區的高度和寬度均爲32像素的倍數 。

在iOS 4.2上,出現了一個錯誤,其中非32的OpenGL ES渲染緩衝區大小在模擬器下顯示爲黑色(但在設備上工作正常)。鑑於您的內容在某些尺寸顯示正確,但不是其他尺寸,您可能會遇到相關問題。

在任何情況下,無論如何,爲了獲得最佳性能,您需要確保渲染緩衝區現在甚至是32的倍數。

+0

感謝您的幫助,我會試試這個。我猜閃爍的是,我的變換是視圖上的一個動畫尺度,因此它正在通過一些不好的尺寸進行縮放?沒有發生在os的早期版本中,只有4.3。我會嘗試速度的建議,但最終的結果大小。 – Daniel 2011-03-22 04:39:34

0

我同意布拉德黑色背景聽起來像32錯誤,但閃爍不......也許你可以嘗試設置Raintained支持爲真。這可能有幫助。

在OpenGLES2DView.m:

eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys: 
            [NSNumber numberWithBool:YES], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil]; 
+0

我也會試試這個 – Daniel 2011-03-22 04:39:50

+0

只是爲了添加更新。我看了,已經有了上面的屬性集。我得到了32的整數倍,但我的情況聽起來不同。我定義了一個緩衝區大小,然後基於用戶操作,我使用'transform'屬性對該視圖進行縮放和轉換。所以我沒有改變最初的框架大小,只是縮放那裏的東西。我確實發現我必須在每次轉換時加上一點巧克力因素,以找到不會變黑的尺寸,並且工作起來。再次在視圖的動畫轉換過程中,我會看到繪製僞像和閃爍。 – Daniel 2011-03-24 14:33:17

1

我懷疑,同樣的事情發生在我身上,我的申請於4.2.2工作,但它有疏遠的行爲4.3。我在'openGL視圖'中繪製圖像,該視圖是UIScrollView的子視圖,有時圖像是黑色的,直到圖像變爲縮小或縮小手勢,有時圖像在縮放時調整大小,它留下黑色邊框在之前的圖像被繪製的地方,有時圖像在滾動視圖內滾動良好,但其他圖像變成黑色並且不跟隨滾動。 4.3設備中沒有這些事情發生。

謝謝你的時間。 Greg

+0

我忘了說這種行爲發生在每個尺寸的圖像上,當我的幀緩衝區是32的倍數時,但在這種情況下,我會說黑色圖像不太常見,它也可能是偏執狂。 – Greg 2011-06-09 08:37:21

0

我有同樣的問題,這讓我瘋狂。

要解決這個問題,我只是爲我的Open GL視圖指定了一個backgroundColor。我有沒有想法這個東西是如何工作的,在這裏,但是確實爲解決了這個問題。

希望它可以幫助。

順便說一下,這個特定的問題似乎是固定在iOS 5上。

相關問題