2010-12-10 63 views
1

我正在開發一個帶有一些本機代碼(用於使用OpenGL ES 2.0進行渲染)的Android應用程序。複製指向靜態數組的指針

我有以下方法簽名:

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

要訪問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()來實現您想要的功能。