Android Open Source - geoar-app Multisample Configs






From Project

Back to project page geoar-app.

License

The source code is released under:

Apache License

If you think the Android project geoar-app listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/**
 * Copyright 2012 52North Initiative for Geospatial Open Source Software GmbH
 */* www .  j a v a 2  s.  c  om*/
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.n52.geoar.ar.view.gl;

import javax.microedition.khronos.egl.EGL10;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.egl.EGLDisplay;

import android.opengl.GLSurfaceView;
import android.util.Log;

public class MultisampleConfigs implements GLSurfaceView.EGLConfigChooser {

  private final int[] res = new int[1];
  private boolean usesCoverage;
  private int[] config;
  
  @Override
  public EGLConfig chooseConfig(EGL10 egl10, EGLDisplay display) {

    //@formatter:off
        /** Try to get rgb565 standard configurations */
        int[] config = {
                EGL10.EGL_RED_SIZE, 8,
                EGL10.EGL_GREEN_SIZE, 8,
                EGL10.EGL_BLUE_SIZE, 8,
                EGL10.EGL_ALPHA_SIZE, 8,
                EGL10.EGL_DEPTH_SIZE, 16,
                EGL10.EGL_RENDERABLE_TYPE, 4,
                EGL10.EGL_SAMPLE_BUFFERS, 1,
                EGL10.EGL_SAMPLES, 2,
                EGL10.EGL_NONE
        };
        //@formatter:on

    /**
     * returns a list of all EGL frame buffer configurations that match the
     * attributes of config
     */
    if (!egl10.eglChooseConfig(display, config, null, 0, res)) {
      throw new IllegalArgumentException("eglChooseConfig failed");
    }

    if (res[0] <= 0) {
      /**
       * try to find a multisampling configuration with coverage sampling
       * (case for tegra2)
       */
      final int EGL_COVERAGE_BUFFERS_NV = 0x30E0;
      final int EGL_COVERAGE_SAMPLES_NV = 0x30E1;

      //@formatter:off
      config = new int[] { 
          EGL10.EGL_RED_SIZE, 8, 
          EGL10.EGL_GREEN_SIZE, 8, 
          EGL10.EGL_BLUE_SIZE, 8, 
          EGL10.EGL_ALPHA_SIZE, 8,
          EGL10.EGL_DEPTH_SIZE, 16,
          EGL10.EGL_RENDERABLE_TYPE, 4,
          EGL_COVERAGE_BUFFERS_NV, 1,
          EGL_COVERAGE_SAMPLES_NV, 2, 
          EGL10.EGL_NONE 
      };
      //@formatter:on

      /**
       * returns a list of all EGL frame buffer configurations that match
       * the attributes of config
       */
      if (!egl10.eglChooseConfig(display, config, null, 0, res)) {
        throw new IllegalArgumentException("eglChooseConfig failed");
      }

      if (res[0] <= 0) {
        /** no multisampling matched - try without. */
        //@formatter:off
        config = new int[] { 
            EGL10.EGL_RED_SIZE, 8,
            EGL10.EGL_GREEN_SIZE, 8, 
            EGL10.EGL_BLUE_SIZE, 8,
            EGL10.EGL_ALPHA_SIZE, 8,
            EGL10.EGL_DEPTH_SIZE, 16, 
            EGL10.EGL_RENDERABLE_TYPE, 4, 
            EGL10.EGL_NONE 
        };
        //@formatter:on

        if (!egl10.eglChooseConfig(display, config, null, 0, res)) {
          throw new IllegalArgumentException(
              "3rd eglChooseConfig failed");
        }

        if (res[0] <= 0)
          throw new IllegalArgumentException("No configs matched");
      } else {
        usesCoverage = true;
      }

    }

    int configSize = res[0];

    /** get matched configurations */
    EGLConfig[] eglConfigs = new EGLConfig[configSize];
    if (!egl10
        .eglChooseConfig(display, config, eglConfigs, configSize, res)) {
      throw new IllegalArgumentException("data eglChooseConfig failed");
    }

    int index = 0;
//    for (int i = 0; i < eglConfigs.length; ++i) {
//      if(egl10.eglGetConfigAttrib(display, eglConfigs[i], EGL10.EGL_RED_SIZE, res)){
//        if(res[0] == 5){
//          index = i;
//          break;
//        }
//      }
//    }
//    
    EGLConfig eglConfig = null;
    if(eglConfigs.length > 0 && index != -1){
      eglConfig = eglConfigs[index];
    } else {
      Log.w("MultisampleConfig", "no configs found");
    }
    
    return eglConfig;
  }


  public boolean usesCoverage() {
    return usesCoverage;
  }

}




Java Source Code List

.DataSourcesOverlay.java
.VisualizationOverlayItem.java
org.n52.geoar.AboutDialog.java
org.n52.geoar.DataSourceListAdapter.java
org.n52.geoar.GeoARActivity.java
org.n52.geoar.GeoARApplication.java
org.n52.geoar.ar.view.ARFragment.java
org.n52.geoar.ar.view.ARObject.java
org.n52.geoar.ar.view.ARView.java
org.n52.geoar.ar.view.DataSourceVisualizationHandler.java
org.n52.geoar.ar.view.IntroController.java
org.n52.geoar.ar.view.IntroViewer.java
org.n52.geoar.ar.view.gl.ARSurfaceViewRenderer.java
org.n52.geoar.ar.view.gl.ARSurfaceView.java
org.n52.geoar.ar.view.gl.GLESCamera.java
org.n52.geoar.ar.view.gl.MultisampleConfigs.java
org.n52.geoar.ar.view.gl.SurfaceTopology.java
org.n52.geoar.ar.view.overlay.ARCanvasSurfaceView.java
org.n52.geoar.ar.view.overlay.GUIDrawable.java
org.n52.geoar.ar.view.overlay.Radar.java
org.n52.geoar.exception.UnsupportedGeometryType.java
org.n52.geoar.map.view.DataSourceOverlayHandler.java
org.n52.geoar.map.view.GeoARMapView.java
org.n52.geoar.map.view.MapActivityContext.java
org.n52.geoar.map.view.MapFragment.java
org.n52.geoar.map.view.overlay.DataSourceOverlay.java
org.n52.geoar.map.view.overlay.DataSourcePointOverlay.java
org.n52.geoar.map.view.overlay.DataSourcePolygonOverlay.java
org.n52.geoar.map.view.overlay.DataSourcePolylineOverlay.java
org.n52.geoar.map.view.overlay.DataSourcesOverlay.java
org.n52.geoar.map.view.overlay.OverlayType.java
org.n52.geoar.map.view.overlay.PointOverlayType.java
org.n52.geoar.map.view.overlay.PolygonOverlayType.java
org.n52.geoar.map.view.overlay.PolylineOverlayType.java
org.n52.geoar.newdata.CheckList.java
org.n52.geoar.newdata.DataCache.java
org.n52.geoar.newdata.DataSourceHolder.java
org.n52.geoar.newdata.DataSourceInstanceHolder.java
org.n52.geoar.newdata.DataSourceInstanceSettingsDialogActivity.java
org.n52.geoar.newdata.InstalledPluginHolder.java
org.n52.geoar.newdata.PluginActivityContext.java
org.n52.geoar.newdata.PluginContext.java
org.n52.geoar.newdata.PluginDialogFragment.java
org.n52.geoar.newdata.PluginDownloadHolder.java
org.n52.geoar.newdata.PluginDownloader.java
org.n52.geoar.newdata.PluginFragment.java
org.n52.geoar.newdata.PluginGridAdapter.java
org.n52.geoar.newdata.PluginHolder.java
org.n52.geoar.newdata.PluginLoader.java
org.n52.geoar.newdata.PluginLogger.java
org.n52.geoar.newdata.PluginStateInputStream.java
org.n52.geoar.newdata.Tile.java
org.n52.geoar.settings.DateTimeSettingsViewField.java
org.n52.geoar.settings.DateUtils.java
org.n52.geoar.settings.NumberSettingsViewField.java
org.n52.geoar.settings.SettingsException.java
org.n52.geoar.settings.SettingsHelper.java
org.n52.geoar.settings.SettingsViewField.java
org.n52.geoar.settings.SettingsView.java
org.n52.geoar.settings.SpinnerSettingsViewField.java
org.n52.geoar.settings.StringSettingsViewField.java
org.n52.geoar.tracking.camera.CameraView.java
org.n52.geoar.tracking.camera.RealityCamera.java
org.n52.geoar.tracking.location.AdaptiveLowPassSensorBuffer.java
org.n52.geoar.tracking.location.LocationHandler.java
org.n52.geoar.tracking.location.LowPassSensorBuffer.java
org.n52.geoar.tracking.location.MeanSensorBuffer.java
org.n52.geoar.tracking.location.SensorBuffer.java
org.n52.geoar.view.InfoView.java
org.n52.geoar.view.geoar.CalibrationControlView.java
org.n52.geoar.view.geoar.Settings.java
org.n52.geoar.view.geoar.gl.mode.BilligerColorShader.java
org.n52.geoar.view.geoar.gl.mode.BilligerLightShader.java
org.n52.geoar.view.geoar.gl.mode.BilligerTextureShader.java
org.n52.geoar.view.geoar.gl.mode.BoundingBox.java
org.n52.geoar.view.geoar.gl.mode.FeatureShader.java
org.n52.geoar.view.geoar.gl.mode.PhongFeatureShader.java
org.n52.geoar.view.geoar.gl.mode.RenderFeature2.java
org.n52.geoar.view.geoar.gl.mode.Spatial.java
org.n52.geoar.view.geoar.gl.mode.TextureFeatureShader.java
org.n52.geoar.view.geoar.gl.mode.Texture.java
org.n52.geoar.view.geoar.gl.mode.features.CubeFeature2.java
org.n52.geoar.view.geoar.gl.mode.features.FlatCircleFeature.java
org.n52.geoar.view.geoar.gl.mode.features.HeightMapFeature.java
org.n52.geoar.view.geoar.gl.mode.features.NewGridFeature.java
org.n52.geoar.view.geoar.gl.mode.features.ReferencedGridFeature.java
org.n52.geoar.view.geoar.gl.mode.features.SphereFeature.java
org.n52.geoar.view.geoar.gl.mode.features.TriangleFeature.java