2017-10-18 14 views
0

私はJavaプラグインからOpenGLでネイティブにテクスチャをロードするAndroidプラグインに取り組んでいます。私は、このOpenGLの文脈の全体が難しいことを知っています。これは、Javaコードです:UnityのOpenGLコンテキストが2017.1.2f1より上にありません

 public static int Load(byte[] textureData) 
    { 
     final int[] textureHandle = new int[1]; 

     GLES30.glGenTextures(1, textureHandle, 0); 

      if (textureHandle[0] != 0) 
      { 
       final BitmapFactory.Options options = new BitmapFactory.Options(); 
       options.inScaled = false; // No pre-scaling 

       // Read in the resource 
      final Bitmap bitmap = BitmapFactory.decodeByteArray(textureData, 0, textureData.length, options); 

      // Bind to the texture in OpenGL 
      GLES30.glBindTexture(GLES30.GL_TEXTURE_2D, textureHandle[0]); 

      // Set filtering 
      GLES30.glTexParameteri(GLES30.GL_TEXTURE_2D, GLES30.GL_TEXTURE_MIN_FILTER, GLES30.GL_NEAREST); 
      GLES30.glTexParameteri(GLES30.GL_TEXTURE_2D, GLES30.GL_TEXTURE_MAG_FILTER, GLES30.GL_NEAREST); 

      // Load the bitmap into the bound texture. 
      GLUtils.texImage2D(GLES30.GL_TEXTURE_2D, 0, bitmap, 0); 

      // Recycle the bitmap, since its data has been loaded into OpenGL. 
      bitmap.recycle(); 
     } 

     if (textureHandle[0] == 0) 
     { 
      throw new RuntimeException("Error loading texture."); 
     } 

     return textureHandle[0]; 
    } 

それは例えばボタンのonclickイベントから呼ばれていた場合、それは例外がスローされます。(スレッドごとに一度ログイン)なし現在のコンテキストでのOpenGL ES APIへ

コール

私はそれを修正する方法を見つけたいくつかのグーグルの後。私のJavaコードをMonoBehaviour.OnRenderObjectから呼び出すと、正常に動作します。テクスチャが読み込まれている、誰もが幸せです。私は2017.1.2f1

その後、ユニティで、このようなサンプルプログラムを作った、私はそれがありません現在のコンテキストでのOpenGL ES APIへ

コールをスロー2017.2.0f3するように更新するとき

(スレッド毎に一度ログイン)

私は何も変更せずに、JavaコードがMonoBehaviour.OnRenderObjectからまだ呼び出されています。私は2017.3ベータ版に更新しようとしましたが、例外もスローされました...何が変わったのですか?私は今、ある程度ブロックされています。私は、リリースノートでそれを引き起こす可能性のある変更に関する情報は見つけられませんでした。

答えて

0

これはthis issueと重複していると思います。

回答には、マルチスレッドレンダリングを無効にする必要があるとの回答がありました。

関連する問題