#include #include #include #include #include #include #include using namespace android; #define USE_DRAW_TEXTURE 1 int main(int argc, char** argv) { if (argc!=2 && argc!=3) { printf("usage: %s <0-6> [pbuffer]\n", argv[0]); return 0; } const int test = atoi(argv[1]); int usePbuffer = argc==3 && !strcmp(argv[2], "pbuffer"); EGLint s_configAttribs[] = { EGL_SURFACE_TYPE, EGL_PBUFFER_BIT|EGL_WINDOW_BIT, EGL_RED_SIZE, 5, EGL_GREEN_SIZE, 6, EGL_BLUE_SIZE, 5, EGL_NONE }; EGLint numConfigs = -1; EGLint majorVersion; EGLint minorVersion; EGLConfig config; EGLContext context; EGLSurface surface; EGLint w, h; EGLDisplay dpy; EGLNativeWindowType window = 0; WindowSurface* windowSurface = NULL; if (!usePbuffer) { windowSurface = new WindowSurface(); window = windowSurface->getSurface(); } dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY); eglInitialize(dpy, &majorVersion, &minorVersion); if (!usePbuffer) { EGLUtils::selectConfigForNativeWindow( dpy, s_configAttribs, window, &config); surface = eglCreateWindowSurface(dpy, config, window, NULL); } else { printf("using pbuffer\n"); eglChooseConfig(dpy, s_configAttribs, &config, 1, &numConfigs); EGLint attribs[] = { EGL_WIDTH, 320, EGL_HEIGHT, 480, EGL_NONE }; surface = eglCreatePbufferSurface(dpy, config, attribs); if (surface == EGL_NO_SURFACE) { printf("eglCreatePbufferSurface error %x\n", eglGetError()); } } context = eglCreateContext(dpy, config, NULL, NULL); eglMakeCurrent(dpy, surface, surface, context); eglQuerySurface(dpy, surface, EGL_WIDTH, &w); eglQuerySurface(dpy, surface, EGL_HEIGHT, &h); GLint dim = w