2010-11-30 33 views
3

我正在移植我在C++和iPhone上使用OpenGL/ES製作的現有跨平臺程序。請記住我對Objective-C沒有任何瞭解...如何旋轉OpenGL以適應iPhone橫向模式?

我剛剛簡單地編輯了其中一個教程的Objective-C文件,以便爲iPhone正確初始化OpenGL,並簡單地調用我的C++ multi - 其他任何平臺的代碼。

我的程序只能在橫向模式下運行,這就是爲什麼我將它設置爲唯一支持的接口方向(在info.plist文件中)。

我想知道的是我應該如何讓OpenGL根據風景模式旋轉。目前我已經添加了一個glRotate,在拖動之前完成它,但這是一個骯髒的伎倆。另一件事:我嘗試將觸摸轉換成與另一種快速方法相當的鼠標點擊座標,並且我得到一個點位於X軸80像素和Y軸80像素的距離。我添加了另一個髒修復(與GlTranslatef)到這個混亂,我得到正確的座標,除了...顏色選擇被打破。

要清楚的是,顏色選擇不會檢測到左側160個第一像素上的任何內容(這是2 * 80和480 - 320,所以,99%的機會是由我的髒代碼引起的。 )

處理這個問題的正確方法是什麼?

回答

1

您不應該在橫向模式下使用OpenGL。我懷疑你實際上並沒有進入橫向模式。您需要在您的視圖控制器覆蓋shouldAutoRotateToInterfaceOrientation:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation { 
    return orientation == UIInterfaceOrientationLandscapeLeft; // Or ...Right 
} 

要驗證它的工作,把一些隨機的控制(例如,空按鈕)在您的視圖的角落,與界面生成器在橫向模式下,看哪裏他們彈出。

+3

相似的想法:`return UIInterfaceOrientationIsLandscape(interfaceOrientation);` – Douglas 2010-11-30 23:10:46

+0

+1 @Douglas:我不知道那個。 – 2010-12-01 00:05:55

0

在iPhone 3G上,這是一個壞主意。使用shouldAutoRotateToInterfaceOrientation旋轉使用OpenGL硬件來執行此操作,因此最好在OpenGL代碼中使用旋轉。如果您沒有性能問題,請保持簡單。