在Android下,我的应用程序(Delphi应用程序)在通过eglCreateContext检索的自己的OpenGL上下文中工作。因此,我具有上下文的句柄(实际上是将指针存储在int64中)。
现在要使webRTC也可以在此共享上下文上工作,我必须将其交给webrtc,而我发现的唯一方法是创建一个EGLBase:
/**
* Explicitly create a root EGl 1.4 context with the specified config attributes
* and shared context.
*/
public static EglBase createEgl14(
android.opengl.EGLContext sharedContext, int[] configAttributes) {
return new EglBase14(new EglBase14.Context(sharedContext), configAttributes);
}
问题在于android.opengl.EGLContext不仅是一个Handle(int64),而且是我们无法创建的Java对象:
public abstract class EGLObjectHandle {
private final long mHandle;
protected EGLObjectHandle(long handle) {
mHandle = handle;
}
public long getNativeHandle() {
return mHandle;
}
}
public class EGLContext extends EGLObjectHandle {
private EGLContext(long handle) {
super(handle);
}
}
您可以看到EGLContext的创建者是私有的,因此我们无法创建此对象。 (我开始悬赏一个问题(How to create an Object with private creator under PIE?),询问是否可以创建它,但是接缝没有办法)
所以我在这里,如何使webrtc在通过eglCreateContext检索的共享OpenGL上下文中工作?