我正在尝试为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,还是您认为问题在其他地方?
发布于 2011-08-12 03:22:27
我怀疑在代码中的任何地方都会调用上下文构造函数;如果调用了,它就会崩溃:
constructed)
gl转换为EGL11类型,而它没有实现该接口。在EGLContext glContext = ((EGL11) gl).eglCreateContext(dpy, config, EGL11.EGL_NO_CONTEXT, attribList);中使用config成员,而它没有初始化(它是空的,因为您的configs成员的条目不是指定的是gl吗?)从上下文类?
gl成员,然后在gl = (GL11)glContext.getGL()
简而言之,我不认为gl最初被分配了一个值,但是如果没有剩下的代码,很难判断。
https://stackoverflow.com/questions/7015570
复制相似问题