2010-12-10 16 views
1

Ich entwickle eine Android-Anwendung mit einigen nativen Code (zum Rendern mit OpenGL ES 2.0 verwendet).Kopieren Sie einen Zeiger auf ein statisches Array

Ich habe die folgende Methode Unterschrift:

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

Um den Zugriff auf jfloatArray vertices, jfloatArray normals, jfloatArray texCoord, jintArray indices Elemente erhalte ich folgendes tun:

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); 

Und nach glDrawElements (...), am Ende, Ich mache folgendes:

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

Ich zeichne nicht das Modell, das ich will, wahrscheinlich, bec ause Ich gebe Zeiger, während sie noch von glDrawElements verwendet werden. Ich bin mir nicht sicher, aber ich möchte es überprüfen, bevor ich irgendwelche anderen Tests mache.

Meine Frage ist, wie kann ich ein statisches Array von einem Zeiger machen?

ich Zeiger bekommen kann diese Elemente tun:

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

Aber ich weiß nicht, wie es weitergeht.

Irgendwelche Ratschläge?

Ich bin im Internet suchen, wie zu finden, und wenn ich etwas finde, werde ich Ihnen sagen.

Danke.

Antwort

0

Lassen Sie mich wissen, wenn ich falsch interpretiere, was Sie fragen, aber es klingt wie Sie müssen auf Ihrem C++ auffrischen. Statische Arrays in C++ haben zur Kompilierungszeit eine feste Größe. Sie wollen wahrscheinlich mit Hilfe von new[] oder malloc() herausfinden, was Sie wollen.

Verwandte Themen