Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将指针复制到静态数组_C++_Android_Java Native Interface_Opengl Es 2.0 - Fatal编程技术网

C++ 将指针复制到静态数组

C++ 将指针复制到静态数组,c++,android,java-native-interface,opengl-es-2.0,C++,Android,Java Native Interface,Opengl Es 2.0,我正在用一些本机代码开发一个Android应用程序(用于使用OpenGL ES 2.0进行渲染) 我有以下方法签名: JNIEXPORT void JNICALL Java_com_xxxxxx_xxxx_ActivityRenderer_renderFrame (JNIEnv *env, jobject obj, jfloatArray vertices, jfloatArray normals, jfloatArray texCoord, jint

我正在用一些本机代码开发一个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顶点、jfloatArray法线、jfloatArray texCoord、jintArray索引
元素,请执行以下操作:

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);
env->ReleaseFloatArrayElements(vertices, vertPos, 0);
env->ReleaseFloatArrayElements(normals, vertNorm, 0);
env->ReleaseFloatArrayElements(texCoord, vertTexC, 0);
env->ReleaseIntArrayElements(indices, indicesArray, 0);
在元素(…)之后,在结束时,我执行以下操作:

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);
env->ReleaseFloatArrayElements(vertices, vertPos, 0);
env->ReleaseFloatArrayElements(normals, vertNorm, 0);
env->ReleaseFloatArrayElements(texCoord, vertTexC, 0);
env->ReleaseIntArrayElements(indices, indicesArray, 0);
我不是在画我想要的模型,可能是因为我在释放指针,而它们仍然被gldrawerelements使用。我不确定,但我想在做任何其他测试之前检查一下

我的问题是如何从指针生成静态数组

我可以让指针的元素执行以下操作:

jsize numVertices = env->GetArrayLength(vertices);
jsize numNormals = env->GetArrayLength(normals);
jsize numTexCoords = env->GetArrayLength(texCoord);
GLsizei numIndices = (GLsizei) env->GetArrayLength(indices);
但我不知道如何继续

有什么建议吗

我在网上搜索,想知道怎么做,如果我找到什么,我会告诉你


如果我误解了你的要求,请告诉我,但是听起来你需要复习一下你的C++。C++中的静态数组在编译时具有固定的大小。您可能希望研究使用
new[]
malloc()
来实现您想要的功能