developer.android.com에서 제공하는 GLES20 샘플을 사용할 때 "호출되지 않은 OpenGL ES API"오류가 발생합니다. 하지만 샘플을 수정했습니다. 내가 GLSurfaceView.BaseConfigChooser.chooseconfig에 IllegalArgumentException를 가지고 때문에 이유는, 그래서 나는 새로운 OnCreateMethod mGLSurfaceView.setEGLContextClientVersion(2);
Android : GLES20 : 구현되지 않은 OpenGL ES API로 호출 됨
를 교체하십시오 "호출 구현되지는 OpenGL ES API를"오류가에서 예를 들어 발생
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
mGLSurfaceView = new GLSurfaceView(this);
mGLSurfaceView.setEGLConfigChooser(new EGLConfigChooser()
{
@Override
public EGLConfig chooseConfig(EGL10 egl, EGLDisplay display)
{
EGLConfig[] configs = new EGLConfig[1];
int[] num_config = new int[1];
boolean check = false;
int[] configSpec = { EGL10.EGL_DEPTH_SIZE, 16, EGL10.EGL_NONE };
check = egl.eglInitialize(display, new int[] { 2, 0 });
if (!check)
return null;
check = false;
check = egl.eglChooseConfig(display, configSpec, configs, 1, num_config);
if (!check)
return null;
return configs[0];
}
});
mGLSurfaceView.setEGLContextFactory(new EGLContextFactory()
{
@Override
public void destroyContext(EGL10 egl, EGLDisplay display, EGLContext context)
{
egl.eglDestroyContext(display, context);
}
@Override
public EGLContext createContext(EGL10 egl, EGLDisplay display, EGLConfig eglConfig)
{
int[] attrib_list = new int[]{EGL10.EGL_VERSION, 2, EGL10.EGL_NONE};
EGLContext context = egl.eglCreateContext(display, eglConfig, EGL10.EGL_NO_CONTEXT, attrib_list );
return context;
}
});
mGLSurfaceView.setRenderer(new GLES20TriangleRenderer(this));
setContentView(mGLSurfaceView);
}
GLES20.glCreateShader;
또는 GLES20.glShaderSource
public void onSurfaceCreated(GL10 gl, EGLConfig config)
에
gl.glGetString(GLES20.GL_VERSION);
을했다. glGetString이 "OpenGL ES-CM 1.0"을 반환했습니다. OnSurfaceCreated는 컨피규레이션을 선택하고 컨텍스트를 생성 한 후에 호출됩니다. 그래서 정말로 이해하지 못합니다. 왜 왜 glGetString이 "OpenGL ES-CM 1.0"을 반환하는지 이해하지 못합니다.
Android 2.2 API를 사용하고 Android 2.2 가상 장치 및 Android 2.2.1이 설치된 HTC Wildfire에서 샘플을 시험해 보았습니다.
내가 어떤 도움
저는 GL ES 1.1/2.0에 대해 경험이 없지만 AFAIK를 잘 구현하지 못한다는 것을 잘 알고있는 것이 좋습니다. 그리고 장치에서는 작동하지만 에뮬레이터에서는 작동하지 않는 코드로 끝날 수 있습니다. – harism