我将jvm openvr 绑定更新到最后一个openvr版本 1.0.5,但我不确定一件事。
在cpp中,有IVROverlay
这个虚SetOverlayIntersectionMask
函数的类:
virtual EVROverlayError SetOverlayIntersectionMask(
VROverlayHandle_t ulOverlayHandle,
VROverlayIntersectionMaskPrimitive_t *pMaskPrimitives,
uint32_t unNumMaskPrimitives,
uint32_t unPrimitiveSize = sizeof( VROverlayIntersectionMaskPrimitive_t ) ) = 0;
我对最后一个论点表示怀疑。
VROverlayIntersectionMaskPrimitive_t
:
struct VROverlayIntersectionMaskPrimitive_t
{
EVROverlayIntersectionMaskPrimitiveType m_nPrimitiveType;
VROverlayIntersectionMaskPrimitive_Data_t m_Primitive;
};
是一个具有枚举类型和联合类型变量的结构,称为VROverlayIntersectionMaskPrimitive_Data_t
:
typedef union
{
IntersectionMaskRectangle_t m_Rectangle;
IntersectionMaskCircle_t m_Circle;
} VROverlayIntersectionMaskPrimitive_Data_t;
这是由上面的两个类实现的,IntersectionMaskRectangle_t
并且IntersectionMaskCircle_t
现在,枚举转换为Int
但后者?既然它应该是一个指针,我想它应该是Pointer.SIZE
?
然而这是我的实现,VROverlayIntersectionMaskPrimitive_Data_t
抽象类在哪里:
abstract class VROverlayIntersectionMaskPrimitive_Data_t : Structure {
constructor() : super()
constructor(peer: Pointer) : super(peer)
}
由另外两个类依次实现。
我的第一个猜测是sizeof(VROverlayIntersectionMaskPrimitive_Data_t)
Int + Pointer.SIZE
@JvmOverloads fun setOverlayIntersectionMask(
ulOverlayHandle: VROverlayHandle_t,
pMaskPrimitives: VROverlayIntersectionMaskPrimitive_t.ByReference,
unNumMaskPrimitives: Int,
unPrimitiveSize: Int = Int.BYTES + Pointer.SIZE)
我的推理看起来正确吗?