我正在尝试在 android 的 opengl-es 中创建一个上下文,我对此有点困惑。我已经在一个完全独立于我的渲染器和我的启动活动的类中初始化了我的上下文,就像这样。
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)。
我的上下文是否初始化不当,以至于它返回 null 或者您认为问题出在其他地方?