Под Android мое приложение (приложение Delphi) работает в своем собственном контексте OpenGL, полученном с помощью eglCreateContext .Итак, у меня есть дескриптор (буквально указатель, хранящийся в 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 - это не просто дескриптор (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 является частным, поэтому мы не можем создать этот объект.(Я начинаю щедрость на вопрос ( Как создать объект с частным создателем в PIE? ), спрашивающий, есть ли способ его создать, но нет никакого шва)
Итак, вот я, как я могу заставить webrtc работать с общим контекстом OpenGL, который я получаю через eglCreateContext ?