2011-03-24 86 views
0

我目前正在使用NDK移植遊戲。我正在使用本機OpenGL,並且在使用glGet *函數時遇到問題。glGetIntegerv/glGetFloatv Android NDK

下面的代碼片段:

m_camera.SetViewMatrix(); //just to make sure nothings left from the last render 

     int viewport[4]; 
     glGetIntegerv(GL_VIEWPORT, viewport); 

     float proj[16]; 
     glGetFloatv(GL_PROJECTION_MATRIX, proj); 

     float model[16]; 
     glGetFloatv(GL_MODELVIEW_MATRIX, model); 

     m_currentRay.Create(x, y, 0.0f, 1.0f, model, proj, viewport); 

一切看起來不錯,但它似乎像glGet *功能根本不工作,並且不返回任何值。

我甚至試圖初始化變量到某些值,但是當glGet *函數被調用時,變量是不變的。例如:

int viewport[4]; 
viewport[0] = 1; 
viewport[1] = 2; 
viewport[2] = 3; 
viewport[3] = 4; 

當和glGetIntegerv(GL_VIEWPORT,視口);被稱爲,視口仍然是一樣的。這同樣適用於所有變量。

的幾個注意事項:

  • 我調試在HTC野火
  • 使用GLES 1.0
  • 的Android SDK 2.2版本(API第8版)

任何幫助,將不勝感激。

謝謝!

+0

對於獲取矩陣,檢查您的設備是否有GL_OES_matrix_get擴展 – ognian 2011-03-24 13:46:43

+0

感謝您的答覆,但我認爲這是爲GLES 1.1,開始認爲glGetIntegerv/glGetFloatv既是GLES 1.1也是,並且Wildfire只支持1.0。 – MomTarsh 2011-03-24 17:18:01

+0

我認爲就是這樣;一些Android設備僅支持非常舊的版本的GLES。我對GL_OES_matrix_get的閱讀是關於能夠在僅提供固定點接口的ES 1.1版本上獲得浮點矩陣,但我猜如果它是在ES 1.0之上實現的,那麼它仍然會解決問題。 – Tommy 2011-03-24 20:47:10

回答

1

AFAIK,wildfire使用PixelFlinger軟件GL實現。我知道PixelFlinger 1.2沒有實現glGetFloat,但如果後來的版本已經糾正這個問題,那麼它就沒有任何信息。打電話時是否有任何記錄信息?至少1.2,有一個非特定的「未實現函數」警告。

至於解決方案 - 您只需在自己的代碼中創建矩陣,然後將其上傳到GL。