私は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ベータ版に更新しようとしましたが、例外もスローされました...何が変わったのですか?私は今、ある程度ブロックされています。私は、リリースノートでそれを引き起こす可能性のある変更に関する情報は見つけられませんでした。