Я пытаюсь создать контекст в OpenGL-ES для Android, и я немного запутался по этому поводу. Я инициализировал свой контекст в совершенно отдельном классе от моего рендерера и моей активности запуска следующим образом.
import javax.microedition.khronos.egl.EGL11;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.egl.EGLContext;
import javax.microedition.khronos.egl.EGLDisplay;
import javax.microedition.khronos.egl.EGLSurface;
import javax.microedition.khronos.opengles.GL11;
public class Context {
public static GL11 gl;
EGLConfig[] configs = new EGLConfig[1];
EGLConfig config = configs[0];
EGLDisplay dpy;
int attribList;
EGLSurface surf;
static EGLContext glContext;
public Context() {
int attribList [] =
{
EGL11.EGL_DEPTH_SIZE, 15, // z-buffer
EGL11.EGL_NONE
};
dpy = ((EGL11) gl).eglGetDisplay(EGL11.EGL_DEFAULT_DISPLAY);
EGLContext glContext = ((EGL11) gl).eglCreateContext(dpy, config, EGL11.EGL_NO_CONTEXT, attribList);
gl = (GL11)glContext.getGL();
}
}
Мое приложение - это простая вещь, которая при запуске рисует на экране два квадрата, одно перемещается в случайном направлении, а другое остается на месте и вращается. Теоретически пользователь должен иметь возможность касаться экрана, а стационарный квадрат должен перемещаться в место, к которому он прикоснулся. Но мое приложение падает, когда вызывается мой метод UnProject (который мне нужен для перевода координат), возможно, из-за того, что мой контекст
GL11 gl
(который является аргументом для моего класса UnProject) возвращает значение null (NullPointerException выбрасывается при сбое моего приложения).
Мой контекст инициализирован плохо, так что он возвращает ноль, или вы думаете, что проблема в другом месте?