我有一个包含函数指针的C结构.现在,我在C中使用了这个设置没有问题,但现在我在Objective-C中使用这个C结构,我需要传递一个在Objective-C类中定义的函数(或选择器)指针.
1.这是我对Objective-C选择器所需要的,它需要作为指向C函数的指针传递:
- (void)myObjCSelector:(int*)myIntArray
{
// Do whatever I need with myIntArray
}
Run Code Online (Sandbox Code Playgroud)
2,这里是我碰壁,在Objective-C的我想选择通过作为指针到C函数调用:在地方的" myObjCSelectorPointer "我需要正确的语法通过选择作为这个C函数调用中的函数指针:
passObjCSelectorPointerToCContext(cContextReference, myObjCSelectorPointer);
Run Code Online (Sandbox Code Playgroud)
我确实调查了这个问题,但主要可以找到几种不同的方法来做类似的事情,但我找不到任何特定的调用C函数和传递Objective-C选择器指针.
我已经找到了大量关于如何在JNI中生成2D原始数组并将其返回给Java的文档.但是这些信息无法描述如何在C中给出上下文传递已经存在的 2D浮点数组(float**).
为了明确地描述我的问题,我将添加一些我想要实现的C伪代码:
// Returns a 2D float array from C to Java
jfloatArray ndk_test_getMy2DArray(JNIEnv* env, jobject thiz, jlong context)
{
// Cast my context reference
MyContextRef contextRef = (MyContextRef) context;
// In case we need it below
unsigned int length = MyContextGet1DLength(contextRef);
// Get the 2D Array we want to "Cast"
float** primitive2DArray = MyContextGet2DArray(contextRef);
// Hokus pokus...
// We do something to create the returnable data to Java
//
// Below is the …
Run Code Online (Sandbox Code Playgroud) c java java-native-interface multidimensional-array android-ndk
我有两组顶点用作线条:
重要的是要知道这些顶点具有先前未知的值,因为它们是动态的.
我想在这两者之间进行动画过渡(变形).我想出了两种不同的方法:
在顶点着色器中设置一个时间均匀,从0到1,我可以这样做:
// Inside main() in the vertex shader
float originX = Position.x;
float destinationX = DestinationVertexPosition.x;
float interpolatedX = originX + (destinationX - originX) * Time;
gl_Position.x = interpolatedX;
Run Code Online (Sandbox Code Playgroud)
正如您可能看到的,这有一个问题:如何在那里获得"DestinationVertexPosition"?
在顶点着色器之外进行插值计算,我遍历每个顶点并为插值创建第三个顶点集,并使用它进行渲染:
// Pre render
// Use this vertex set to render
InterpolatedVertexes
for (unsigned int i = 0; i < vertexCount; i++) {
float originX = Vertexes1[i].x;
float destinationX = Vertexes2[i].x;
float interpolatedX = originX + (destinationX - originX) …
Run Code Online (Sandbox Code Playgroud) 我正在尝试找到从2D空间中的指定点获取圆的最远点的最佳方法.到目前为止,我发现的是如何获得点和圆位置之间的距离,但我不完全确定如何扩展它以找到圆的最远点.
已知变量是:
为了找到点和圆位置之间的距离,我发现了这个:
xd = x2 - x1
yd = y2 - y1
距离= SquareRoot(xd*xd + yd*yd)
在我看来,这是解决方案的一部分.如何扩展以获得下图中的点x的位置?
作为问题的一个附加但可选的部分:我已经在一些地方读过,可以在不使用平方根的情况下获得距离部分,这是非常高性能的,如果需要快速代码则应该避免.就我而言,我会经常做这个计算; 在主要问题的范围内对此提出的任何评论也会受到欢迎.