2011-07-14 16 views
0

このC++コードをAndroidのJavaに変換しようとしています。しかし、私はGL10を使用しており、glGetDoublevはOpenGL-ESではサポートされていないようです。どうすればこの機能を実行できますか?Android OpenGL - C++変換に関するヘルプ

// Get point by reading z buffer and unprojecting to object coords 
    void Pick(int x, int y) 
    { 
     GLint viewport[4]; 
     GLdouble mvmatrix[16], projmatrix[16]; 

     glGetIntegerv(GL_VIEWPORT, viewport); 
     glGetDoublev(GL_MODELVIEW_MATRIX, mvmatrix); 
     glGetDoublev(GL_PROJECTION_MATRIX, projmatrix); 

     int  winx = x; 
     int  winy = winHeight - y; 
     GLfloat winz = 0.0; 
     GLdouble objx = 0.0; 
     GLdouble objy = 0.0; 
     GLdouble objz = 0.0; 

     // Get winz for given winx and winy 
     glReadPixels(winx, winy, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winz); 

     // Make sure there was something at the point 
     if (winz >= 1.0) 
     { 
      qDebug("Nothing picked"); 
     } 
     else 
     { 
      // Get object coords from win coords 
      gluUnProject((GLdouble)winx, (GLdouble)winy, (GLdouble)winz, 
         mvmatrix, projmatrix, viewport, 
         &objx, &objy, &objz); 

      qDebug("Pick: win=%d,%d,%.3f obj=%.3f,%.3f,%.3f", 
       winx, winy, winz, objx, objy, objz); 

      // Place a marker at that position 
      Marker marker; 
      marker.point.x = objx; 
      marker.point.y = objy; 
      marker.point.z = objz; 
      markerList << marker; 

      // limit to two markers 
      if (markerList.count() > 2) 
      markerList.pop_front(); 

      Rebuild(); 
     } 
    } 
+0

おそらくglGetFloatvがサポートされていますか? – user786653

+0

@ user786653 - ありがとうございますが、そうではありません。(整数と文字列だけです。 – RedLeader

+1

[このリンク]をチェックしましたか(http://www.41post.com/1540/programming/android-opengl-get-the-modelview- – user786653

答えて

1

自分のAndroid OpenGL ES 1.0 foraysaysでこの問題が発生しました。 OpenGL ES 1.0では、行列を直接取得することはできません(glGetFloatvが1.0では実装されていない限り、必要に応じて行列を追跡するラッパーを作成する必要があります)。

OpenGL ES 1.1を使用している場合、glGetFloatvは実装されているため、使用できます。 http://www.41post.com/1540/programming/android-opengl-get-the-modelview-matrix-on-15-cupcake

すべての実装の詳細があります。ここでは

は、私はもともと解決策を見つけたウェブサイトです。

関連する問題