is Valid OpenGL Texture Size - Android android.opengl

Android examples for android.opengl:OpenGL Texture

Description

is Valid OpenGL Texture Size

Demo Code


//package com.java2s;
import android.graphics.Bitmap;

import android.opengl.GLES10;
import javax.microedition.khronos.egl.EGL10;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.egl.EGLContext;
import javax.microedition.khronos.egl.EGLDisplay;
import javax.microedition.khronos.egl.EGLSurface;

public class Main {
    public static boolean isValidTextureSize(Bitmap bitmap) {
        try {// w w w.  j  a va 2  s  .  c  o  m
            EGL10 egl = (EGL10) EGLContext.getEGL();

            EGLDisplay dpy = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);
            int[] vers = new int[2];
            egl.eglInitialize(dpy, vers);

            int[] configAttr = { EGL10.EGL_COLOR_BUFFER_TYPE,
                    EGL10.EGL_RGB_BUFFER, EGL10.EGL_LEVEL, 0,
                    EGL10.EGL_SURFACE_TYPE, EGL10.EGL_PBUFFER_BIT,
                    EGL10.EGL_NONE };
            EGLConfig[] configs = new EGLConfig[1];
            int[] numConfig = new int[1];
            egl.eglChooseConfig(dpy, configAttr, configs, 1, numConfig);
            if (numConfig[0] == 0) {
                // TROUBLE! No config found.
            }
            EGLConfig config = configs[0];

            int[] surfAttr = { EGL10.EGL_WIDTH, 64, EGL10.EGL_HEIGHT, 64,
                    EGL10.EGL_NONE };
            EGLSurface surf = egl.eglCreatePbufferSurface(dpy, config,
                    surfAttr);
            final int EGL_CONTEXT_CLIENT_VERSION = 0x3098; // missing in EGL10
            int[] ctxAttrib = { EGL_CONTEXT_CLIENT_VERSION, 1,
                    EGL10.EGL_NONE };
            EGLContext ctx = egl.eglCreateContext(dpy, config,
                    EGL10.EGL_NO_CONTEXT, ctxAttrib);
            egl.eglMakeCurrent(dpy, surf, surf, ctx);
            int[] maxSize = new int[1];
            GLES10.glGetIntegerv(GLES10.GL_MAX_TEXTURE_SIZE, maxSize, 0);
            egl.eglMakeCurrent(dpy, EGL10.EGL_NO_SURFACE,
                    EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_CONTEXT);
            egl.eglDestroySurface(dpy, surf);
            egl.eglDestroyContext(dpy, ctx);
            egl.eglTerminate(dpy);
            return bitmap.getWidth() < maxSize[0]
                    && bitmap.getHeight() < maxSize[0];

        } catch (Exception e) {

        }
        return true;
    }
}

Related Tutorials