Class EXTPrimitiveBoundingBox


  • public class EXTPrimitiveBoundingBox
    extends java.lang.Object
    Native bindings to the EXT_primitive_bounding_box extension.

    On tile-based architectures, transformed primitives are generally written out to memory before rasterization, and then read back from memory for each tile they intersect. When geometry expands during transformation due to tessellation or one-to-many geometry shaders, the external bandwidth required grows proportionally. This extension provides a way for implementations to know which tiles incoming geometry will intersect before fully transforming (and expanding) the geometry. This allows them to only store the unexpanded geometry in memory, and perform expansion on-chip for each intersected tile.

    New state is added to hold an axis-aligned bounding box which is assumed to contain any geometry submitted. An implementation is allowed to ignore any portions of primitives outside the bounding box; thus if a primitive extends outside of a tile into a neighboring tile that the bounding box didn't intersect, the implementation is not required to render those portions. The tessellation control shader is optionally able to specify a per-patch bounding box that overrides the bounding box state for primitives generated from that patch, in order to provide tighter bounds.

    The typical usage is that an application will have an object-space bounding volume for a primitive or group of primitives, either calculated at runtime or provided with the mesh by the authoring tool or content pipeline. It will transform this volume to clip space, compute an axis-aligned bounding box that contains the transformed bounding volume, and provide that at either per-patch or per-draw granularity.

    Requires GLES 3.1.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      static int GL_PRIMITIVE_BOUNDING_BOX_EXT
      Accepted by the pname parameter of GetBooleanv, GetFloatv, GetIntegerv, and GetInteger64v.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void glPrimitiveBoundingBoxEXT​(float minX, float minY, float minZ, float minW, float maxX, float maxY, float maxZ, float maxW)  
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • GL_PRIMITIVE_BOUNDING_BOX_EXT

        public static final int GL_PRIMITIVE_BOUNDING_BOX_EXT
        Accepted by the pname parameter of GetBooleanv, GetFloatv, GetIntegerv, and GetInteger64v.
        See Also:
        Constant Field Values
    • Method Detail

      • glPrimitiveBoundingBoxEXT

        public static void glPrimitiveBoundingBoxEXT​(float minX,
                                                     float minY,
                                                     float minZ,
                                                     float minW,
                                                     float maxX,
                                                     float maxY,
                                                     float maxZ,
                                                     float maxW)