Я разрабатываю приложение Android с некоторым собственным кодом (используется для рендеринга с OpenGL ES 2.0).
У меня есть следующая подпись метода:
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);
Но я не знаю, как продолжить.
Любой совет?
Я ищу в Интернете, как найти, и если янайди что-нибудь, что я тебе скажу.
Спасибо.