2010-12-10 11 views
1

私はいくつかのネイティブコード(OpenGL ES 2.0でレンダリングするために使用)を使ってAndroidアプリケーションを開発しています。静的配列へのポインタをコピー

私は次のメソッドのシグネチャがあります。私は、次の手順を実行しjfloatArray vertices, jfloatArray normals, jfloatArray texCoord, jintArray indices要素へのアクセスを取得するには

JNIEXPORT void JNICALL Java_com_xxxxxx_xxxx_ActivityRenderer_renderFrame 
    (JNIEnv *env, jobject obj, 
      jfloatArray vertices, jfloatArray normals, 
      jfloatArray texCoord, jintArray indices) 

を:

jfloat *vertPos, *vertNorm, *vertTexC; 
jint *indicesArray; 

vertPos = env->GetFloatArrayElements(vertices, 0); 
vertNorm = env->GetFloatArrayElements(normals, 0); 
vertTexC = env->GetFloatArrayElements(texCoord, 0); 
indicesArray = env->GetIntArrayElements(indices, 0); 

そして、glDrawElements(...)した後、最後には、私は次のようにします:

env->ReleaseFloatArrayElements(vertices, vertPos, 0); 
env->ReleaseFloatArrayElements(normals, vertNorm, 0); 
env->ReleaseFloatArrayElements(texCoord, vertTexC, 0); 
env->ReleaseIntArrayElements(indices, indicesArray, 0); 

私は、おそらく、私が望むモデルを描いていません私は彼らがまだglDrawElementsによって使用されている間、ポインタを解放しています。私は分かりませんが、他のテストを行う前にチェックしたいと思います。

私の質問は、どのようにポインタから静的な配列を作ることができますか?

私はこれをやってポインタ要素を取得することができます

jsize numVertices = env->GetArrayLength(vertices); 
jsize numNormals = env->GetArrayLength(normals); 
jsize numTexCoords = env->GetArrayLength(texCoord); 
GLsizei numIndices = (GLsizei) env->GetArrayLength(indices); 

をしかし、私は継続するのか分かりません。

アドバイスはありますか?

私は方法を見つけるためにウェブを検索しています。私が何かを見つけたら教えてくれます。

ありがとうございました。

答えて

0

私があなたが求めているものを誤解しているのかどうか教えてください。しかし、あなたのC++をブラッシュアップする必要があるように思えます。 C++の静的配列はコンパイル時に固定サイズです。あなたは、おそらくnew[]、またはmalloc()を使用して、あなたが望むものを達成したいと考えているでしょう。

関連する問題