/**
  * Frees any GLU resources used by this GLUTessellatorSupport, and invalidates this instance's internal GLU
  * tessellator.
  */
 public void endTessellation()
 {
     GLU.gluTessCallback(this.tess, GLU.GLU_TESS_BEGIN, null);
     GLU.gluTessCallback(this.tess, GLU.GLU_TESS_VERTEX, null);
     GLU.gluTessCallback(this.tess, GLU.GLU_TESS_END, null);
     GLU.gluTessCallback(this.tess, GLU.GLU_TESS_COMBINE, null);
     this.tess = null;
 }
 public void attach(GLUtessellator tessellator)
 {
     GLU.gluTessCallback(tessellator, GLU.GLU_TESS_BEGIN, this);
     GLU.gluTessCallback(tessellator, GLU.GLU_TESS_END, this);
     GLU.gluTessCallback(tessellator, GLU.GLU_TESS_VERTEX, this);
     GLU.gluTessCallback(tessellator, GLU.GLU_TESS_EDGE_FLAG, this);
     GLU.gluTessCallback(tessellator, GLU.GLU_TESS_ERROR, this);
 }
Esempio n. 3
0
        public PolygonTessellator()
        {
            this.tess = GLU.gluNewTess();
            TessCallbackAdapter callback = new TessCallbackAdapter();

            GLU.gluTessCallback(this.tess, GLU.GLU_TESS_BEGIN_DATA, callback);
            GLU.gluTessCallback(this.tess, GLU.GLU_TESS_EDGE_FLAG_DATA, callback);
            GLU.gluTessCallback(this.tess, GLU.GLU_TESS_VERTEX_DATA, callback);
            GLU.gluTessCallback(this.tess, GLU.GLU_TESS_END_DATA, callback);
            GLU.gluTessCallback(this.tess, GLU.GLU_TESS_COMBINE_DATA, callback);

            this.interiorIndices = IntBuffer.allocate(10);
            this.boundaryIndices = IntBuffer.allocate(10);
        }
        /**
         * Prepares this GLUTessellatorSupport's internal GLU tessellator for use. This initializes the internal
         * GLUtessellator to a new instance by invoking {@link javax.media.opengl.glu.GLU#gluNewTess()}, and configures the
         * tessellator with the specified callback and normal with calls to {@link javax.media.opengl.glu.GLU#gluTessCallback(javax.media.opengl.glu.GLUtessellator,
         * int, javax.media.opengl.glu.GLUtessellatorCallback)} and {@link javax.media.opengl.glu.GLU#gluTessNormal(javax.media.opengl.glu.GLUtessellator,
         * double, double, double)}, respectively.
         *
         * @param callback the callback to configure the GLU tessellator with.
         * @param normal   the normal to configure the GLU tessellator with.
         *
         * @throws ArgumentException if the callback or the normal is null.
         */
        public void beginTessellation(GLUtessellatorCallback callback, Vec4 normal)
        {
            if (callback == null)
            {
                String message = Logging.getMessage("nullValue.CallbackIsNull");
                Logging.logger().severe(message);
                throw new ArgumentException(message);
            }

            if (normal == null)
            {
                String message = Logging.getMessage("nullValue.NormalIsNull");
                Logging.logger().severe(message);
                throw new ArgumentException(message);
            }

            this.tess = GLU.gluNewTess();
            GLU.gluTessNormal(this.tess, normal.x, normal.y, normal.z);
            GLU.gluTessCallback(this.tess, GLU.GLU_TESS_BEGIN, callback);
            GLU.gluTessCallback(this.tess, GLU.GLU_TESS_VERTEX, callback);
            GLU.gluTessCallback(this.tess, GLU.GLU_TESS_END, callback);
            GLU.gluTessCallback(this.tess, GLU.GLU_TESS_COMBINE, callback);
        }
Esempio n. 5
0
        /**
         * Creates a new combine context with the specified globe, resolution, and the default region of interest.
         *
         * @param globe      the globe to associate with this context. Shape geometry defined relative to a globe must use
         *                   this globe to compute that geometry.
         * @param resolution the minimum resolution, in radians. Used to filter shape detail and compute geometry for
         *                   resolution independent shapes.
         *
         * @throws java.lang.ArgumentException if the globe is null.
         */
        public CombineContext(Globe globe, double resolution)
        {
            if (globe == null)
            {
                String msg = Logging.getMessage("nullValue.GlobeIsNull");
                Logging.logger().severe(msg);
                throw new ArgumentException(msg);
            }

            GLUtessellatorCallback cb   = new TessCallbackAdapter(this); // forward GLU tessellator callbacks to tess* methods
            GLUtessellator         tess = GLU.gluNewTess();

            GLU.gluTessCallback(tess, GLU.GLU_TESS_BEGIN, cb);
            GLU.gluTessCallback(tess, GLU.GLU_TESS_VERTEX, cb);
            GLU.gluTessCallback(tess, GLU.GLU_TESS_END, cb);
            GLU.gluTessCallback(tess, GLU.GLU_TESS_COMBINE, cb);
            GLU.gluTessCallback(tess, GLU.GLU_TESS_ERROR, cb);
            GLU.gluTessProperty(tess, GLU.GLU_TESS_BOUNDARY_ONLY, GL.GL_TRUE);
            GLU.gluTessNormal(tess, 0, 0, 1);

            this.globe      = globe;
            this.resolution = resolution;
            this.tess       = tess;
        }