2012-05-02 143 views
7

我在尋求建議之前,深入瞭解我的下一個項目。我想支持所有現在由iOS支持的各種解決方案(視網膜,非視網膜iPhone和全部3個iPad)。開發視網膜和非視網膜顯示器OpenGL ES

開發人員最常用的方法是什麼?我看到了類似的問題,但具體性質。我正在尋找完整的軟件包。 IE瀏覽器。我想支持不同分辨率的位圖字體,圖像等。

是設備專用開關,還是if語句標準?

感謝您的高級幫助。

Ë

編輯:我發現這個蘋果:

塊引用 如果應用程序使用的OpenGL ES渲染,現有的圖形碼應繼續無需任何修改工作。然而,當在高分辨率屏幕上繪製時,您的內容會相應地縮放並顯得更加塊狀。塊狀外觀的原因是,用於支持OpenGL ES渲染緩衝區的CAEAGLLayer類的默認行爲與其他Core Animation圖層對象相同。換句話說,它的縮放因子最初設置爲1.0,這將導致Core Animation合成器在高分辨率屏幕上縮放圖層的內容。爲了避免這種塊狀外觀,您需要增加OpenGL ES渲染緩衝區的大小以匹配屏幕的大小。 (隨着像素數量的增加,您可以增加爲內容提供的細節數量。)因爲向渲染緩衝區添加更多像素會有性能影響,但您必須明確選擇支持高分辨率屏幕。

Blockquote 要啓用高分辨率繪圖,您必須更改用於呈現OpenGL ES內容的視圖的比例因子。將視圖的contentScaleFactor屬性從1.0更改爲2.0會觸發底層CAEAGLLayer對象的比例因子的匹配更改。 renderbufferStorage:fromDrawable:方法,用於將圖層對象綁定到渲染緩衝區,通過將圖層的邊界乘以其比例因子來計算渲染緩衝區的大小。因此,縮放倍數倍增了渲染緩衝區的寬度和高度,爲您的內容提供更多像素。之後,您可以爲這些附加像素提供內容。

所以我想我更新的問題是如何加倍上述比例因子?

編輯2:

我幾乎沒有...

我用這對我EAGLView內規模:

 // Adjust for retina displays 
    if ([self respondsToSelector:@selector(setContentScaleFactor:)]) 
    { 
      self.contentScaleFactor = [[UIScreen mainScreen] scale]; 
    } 

現在仍然是唯一的問題是原產地是莫名其妙弄亂。顯示圖像現在根據分辨率進行縮放,但在較大的分辨率下,圖像從屏幕中間開始。

請幫忙!

編輯3:解決!!!!我的方向遇到了問題。

您需要確保您的翻譯已更新。我用這個:

glTranslatef(width/2, height /2, 0); 
glRotatef(-90, 0, 0, 1); 
glTranslatef(-1 * (height/2),-1 * (width/2),0); 

謝謝你的樣子。我希望這可以幫助別人。

+0

與設置conten任何運氣tScale = 2在iPad3上支持視網膜? http://stackoverflow.com/questions/11276027/where-to-start-with-an-opengl-painter-for-the-retina-display –

+0

我還沒有嘗試iPad的視網膜顯示呢。當我這樣做時,我會再次觸及。 –

回答

2

看的見編程指南:視圖幾何和座標系

http://developer.apple.com/library/ios/#DOCUMENTATION/WindowsViews/Conceptual/ViewPG_iPhoneOS/WindowsandViews/WindowsandViews.html

座標值是使用浮點數來表示,這 允許精確佈局和內容的定位而不管 底層屏幕分辨率的

臨屋t表示該點指定(GCRect等)是不是像素 - 它是被調整爲視網膜/非視網膜

最後可可牧師指出,你可以保持PNG圖像和* @ 2個點。 PNG版本的圖片:

Retina Display Images on iPhone

What is the point of the @2x for Retina display apps?

而且,這裏的一對視網膜設計的文章: http://globalmoxie.com/blog/designing-for-iphone4-retina-display.shtml

+2

我很欣賞這種迴應。我將定義閱讀該指南。我認爲這不會對我有用(可能會誤解)。正如我應該首先提到的,我所有的圖像都來自OpenGL ES,而不是UIKit。 –

-2

你只需要在你的軟件包中有@ 2x版本的圖像。 iOS的自動對@ 2個版本,如果它運行在視網膜硬件

相關問題