C++ 将指针复制到静态数组
我正在用一些本机代码开发一个Android应用程序(用于使用OpenGL ES 2.0进行渲染) 我有以下方法签名: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
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()
来实现您想要的功能