Class ARBVertexAttrib64Bit
This extension provides OpenGL shading language support for vertex shader inputs with 64-bit floating-point components and OpenGL API support for specifying the value of those inputs using vertex array or immediate mode entry points. This builds on the support for general-purpose support for 64-bit floating-point values in the ARB_gpu_shader_fp64 extension.
This extension provides a new class of vertex attribute functions, beginning with "VertexAttribL" ("L" for "long"), that can be used to specify
attributes with 64-bit floating-point components. This extension provides no automatic type conversion between attribute and shader variables;
single-precision attributes are not automatically converted to double-precision or vice versa. For shader variables with 64-bit component types, the
"VertexAttribL" functions must be used to specify attribute values. For other shader variables, the "VertexAttribL" functions must not be used. If a
vertex attribute is specified using the wrong attribute function, the values of the corresponding shader input are undefined. This approach requiring
matching types is identical to that used for the "VertexAttribI" functions provided by OpenGL 3.0 and the EXT_gpu_shader4 extension.
Additionally, some vertex shader inputs using the wider 64-bit components may count double against the implementation-dependent limit on the number of vertex shader attribute vectors. A 64-bit scalar or a two-component vector consumes only a single generic vertex attribute; three- and four-component "long" may count as two. This approach is similar to the one used in the current GL where matrix attributes consume multiple attributes.
Note that 64-bit generic vertex attributes were nominally supported beginning with the introduction of vertex shaders in OpenGL 2.0. However, the OpenGL Shading Language at the time had no support for 64-bit data types, so any such values were automatically converted to 32-bit.
Support for 64-bit floating-point vertex attributes in this extension can be combined with other extensions. In particular, this extension provides an
entry point that can be used with EXT_direct_state_access to directly set state for any vertex array object. Also, the related
NV_vertex_attrib_integer_64bit extension provides an entry point to specify bindless vertex attribute arrays with 64-bit
components, integer or floating-point.
Requires OpenGL 3.0, GLSL 1.30 and ARB_gpu_shader_fp64. Promoted to core in OpenGL 4.1.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intReturned in thetypeparameter of GetActiveAttrib.static final intReturned in thetypeparameter of GetActiveAttrib.static final intReturned in thetypeparameter of GetActiveAttrib.static final intReturned in thetypeparameter of GetActiveAttrib.static final intReturned in thetypeparameter of GetActiveAttrib.static final intReturned in thetypeparameter of GetActiveAttrib.static final intReturned in thetypeparameter of GetActiveAttrib.static final intReturned in thetypeparameter of GetActiveAttrib.static final intReturned in thetypeparameter of GetActiveAttrib.static final intReturned in thetypeparameter of GetActiveAttrib.static final intReturned in thetypeparameter of GetActiveAttrib.static final intReturned in thetypeparameter of GetActiveAttrib. -
Method Summary
Modifier and TypeMethodDescriptionstatic voidglGetVertexAttribLdv(int index, int pname, double[] params) Array version of:GetVertexAttribLdvstatic voidglGetVertexAttribLdv(int index, int pname, DoubleBuffer params) Double version ofGetVertexAttribiv.static voidglVertexArrayVertexAttribLOffsetEXT(int vaobj, int buffer, int index, int size, int type, int stride, long offset) DSA version ofVertexAttribLPointer.static voidglVertexAttribL1d(int index, double x) Specifies the value of a generic vertex attribute.static voidglVertexAttribL1dv(int index, double[] v) Array version of:VertexAttribL1dvstatic voidglVertexAttribL1dv(int index, DoubleBuffer v) Pointer version ofVertexAttribL1d.static voidglVertexAttribL2d(int index, double x, double y) Specifies the value of a generic vertex attribute.static voidglVertexAttribL2dv(int index, double[] v) Array version of:VertexAttribL2dvstatic voidglVertexAttribL2dv(int index, DoubleBuffer v) Pointer version ofVertexAttribL2d.static voidglVertexAttribL3d(int index, double x, double y, double z) Specifies the value of a generic vertex attribute.static voidglVertexAttribL3dv(int index, double[] v) Array version of:VertexAttribL3dvstatic voidglVertexAttribL3dv(int index, DoubleBuffer v) Pointer version ofVertexAttribL3d.static voidglVertexAttribL4d(int index, double x, double y, double z, double w) Specifies the value of a generic vertex attribute.static voidglVertexAttribL4dv(int index, double[] v) Array version of:VertexAttribL4dvstatic voidglVertexAttribL4dv(int index, DoubleBuffer v) Pointer version ofVertexAttribL4d.static voidglVertexAttribLPointer(int index, int size, int type, int stride, long pointer) Specifies the location and organization of a 64-bit vertex attribute array.static voidglVertexAttribLPointer(int index, int size, int type, int stride, ByteBuffer pointer) Specifies the location and organization of a 64-bit vertex attribute array.static voidglVertexAttribLPointer(int index, int size, int stride, DoubleBuffer pointer) Specifies the location and organization of a 64-bit vertex attribute array.static voidnglGetVertexAttribLdv(int index, int pname, long params) Unsafe version of:GetVertexAttribLdvstatic voidnglVertexAttribL1dv(int index, long v) Unsafe version of:VertexAttribL1dvstatic voidnglVertexAttribL2dv(int index, long v) Unsafe version of:VertexAttribL2dvstatic voidnglVertexAttribL3dv(int index, long v) Unsafe version of:VertexAttribL3dvstatic voidnglVertexAttribL4dv(int index, long v) Unsafe version of:VertexAttribL4dvstatic voidnglVertexAttribLPointer(int index, int size, int type, int stride, long pointer) Unsafe version of:VertexAttribLPointer
-
Field Details
-
GL_DOUBLE_VEC2
public static final int GL_DOUBLE_VEC2Returned in thetypeparameter of GetActiveAttrib.- See Also:
-
GL_DOUBLE_VEC3
public static final int GL_DOUBLE_VEC3Returned in thetypeparameter of GetActiveAttrib.- See Also:
-
GL_DOUBLE_VEC4
public static final int GL_DOUBLE_VEC4Returned in thetypeparameter of GetActiveAttrib.- See Also:
-
GL_DOUBLE_MAT2
public static final int GL_DOUBLE_MAT2Returned in thetypeparameter of GetActiveAttrib.- See Also:
-
GL_DOUBLE_MAT3
public static final int GL_DOUBLE_MAT3Returned in thetypeparameter of GetActiveAttrib.- See Also:
-
GL_DOUBLE_MAT4
public static final int GL_DOUBLE_MAT4Returned in thetypeparameter of GetActiveAttrib.- See Also:
-
GL_DOUBLE_MAT2x3
public static final int GL_DOUBLE_MAT2x3Returned in thetypeparameter of GetActiveAttrib.- See Also:
-
GL_DOUBLE_MAT2x4
public static final int GL_DOUBLE_MAT2x4Returned in thetypeparameter of GetActiveAttrib.- See Also:
-
GL_DOUBLE_MAT3x2
public static final int GL_DOUBLE_MAT3x2Returned in thetypeparameter of GetActiveAttrib.- See Also:
-
GL_DOUBLE_MAT3x4
public static final int GL_DOUBLE_MAT3x4Returned in thetypeparameter of GetActiveAttrib.- See Also:
-
GL_DOUBLE_MAT4x2
public static final int GL_DOUBLE_MAT4x2Returned in thetypeparameter of GetActiveAttrib.- See Also:
-
GL_DOUBLE_MAT4x3
public static final int GL_DOUBLE_MAT4x3Returned in thetypeparameter of GetActiveAttrib.- See Also:
-
-
Method Details
-
glVertexAttribL1d
public static void glVertexAttribL1d(int index, double x) Specifies the value of a generic vertex attribute. The y and z components are implicitly set to 0.0 and w to 1.0.- Parameters:
index- the index of the generic vertex attribute to be modifiedx- the vertex attribute x component
-
glVertexAttribL2d
public static void glVertexAttribL2d(int index, double x, double y) Specifies the value of a generic vertex attribute. The y component is implicitly set to 0.0 and w to 1.0.- Parameters:
index- the index of the generic vertex attribute to be modifiedx- the vertex attribute x componenty- the vertex attribute y component
-
glVertexAttribL3d
public static void glVertexAttribL3d(int index, double x, double y, double z) Specifies the value of a generic vertex attribute. The w is implicitly set to 1.0.- Parameters:
index- the index of the generic vertex attribute to be modifiedx- the vertex attribute x componenty- the vertex attribute y componentz- the vertex attribute z component
-
glVertexAttribL4d
public static void glVertexAttribL4d(int index, double x, double y, double z, double w) Specifies the value of a generic vertex attribute.- Parameters:
index- the index of the generic vertex attribute to be modifiedx- the vertex attribute x componenty- the vertex attribute y componentz- the vertex attribute z componentw- the vertex attribute w component
-
nglVertexAttribL1dv
public static void nglVertexAttribL1dv(int index, long v) Unsafe version of:VertexAttribL1dv -
glVertexAttribL1dv
Pointer version ofVertexAttribL1d.- Parameters:
index- the index of the generic vertex attribute to be modifiedv- the vertex attribute buffer
-
nglVertexAttribL2dv
public static void nglVertexAttribL2dv(int index, long v) Unsafe version of:VertexAttribL2dv -
glVertexAttribL2dv
Pointer version ofVertexAttribL2d.- Parameters:
index- the index of the generic vertex attribute to be modifiedv- the vertex attribute buffer
-
nglVertexAttribL3dv
public static void nglVertexAttribL3dv(int index, long v) Unsafe version of:VertexAttribL3dv -
glVertexAttribL3dv
Pointer version ofVertexAttribL3d.- Parameters:
index- the index of the generic vertex attribute to be modifiedv- the vertex attribute buffer
-
nglVertexAttribL4dv
public static void nglVertexAttribL4dv(int index, long v) Unsafe version of:VertexAttribL4dv -
glVertexAttribL4dv
Pointer version ofVertexAttribL4d.- Parameters:
index- the index of the generic vertex attribute to be modifiedv- the vertex attribute buffer
-
nglVertexAttribLPointer
public static void nglVertexAttribLPointer(int index, int size, int type, int stride, long pointer) Unsafe version of:VertexAttribLPointer- Parameters:
type- the data type of each component in the array. Must be:DOUBLE
-
glVertexAttribLPointer
public static void glVertexAttribLPointer(int index, int size, int type, int stride, ByteBuffer pointer) Specifies the location and organization of a 64-bit vertex attribute array.- Parameters:
index- the index of the generic vertex attribute to be modifiedsize- the number of values per vertex that are stored in the array. The initial value is 4. One of:1 2 3 4 BGRAtype- the data type of each component in the array. Must be:DOUBLEstride- the byte offset between consecutive generic vertex attributes. If stride is 0, the generic vertex attributes are understood to be tightly packed in the array. The initial value is 0.pointer- the vertex attribute data or the offset of the first component of the first generic vertex attribute in the array in the data store of the buffer currently bound to theARRAY_BUFFERtarget. The initial value is 0.
-
glVertexAttribLPointer
public static void glVertexAttribLPointer(int index, int size, int type, int stride, long pointer) Specifies the location and organization of a 64-bit vertex attribute array.- Parameters:
index- the index of the generic vertex attribute to be modifiedsize- the number of values per vertex that are stored in the array. The initial value is 4. One of:1 2 3 4 BGRAtype- the data type of each component in the array. Must be:DOUBLEstride- the byte offset between consecutive generic vertex attributes. If stride is 0, the generic vertex attributes are understood to be tightly packed in the array. The initial value is 0.pointer- the vertex attribute data or the offset of the first component of the first generic vertex attribute in the array in the data store of the buffer currently bound to theARRAY_BUFFERtarget. The initial value is 0.
-
glVertexAttribLPointer
Specifies the location and organization of a 64-bit vertex attribute array.- Parameters:
index- the index of the generic vertex attribute to be modifiedsize- the number of values per vertex that are stored in the array. The initial value is 4. One of:1 2 3 4 BGRAstride- the byte offset between consecutive generic vertex attributes. If stride is 0, the generic vertex attributes are understood to be tightly packed in the array. The initial value is 0.pointer- the vertex attribute data or the offset of the first component of the first generic vertex attribute in the array in the data store of the buffer currently bound to theARRAY_BUFFERtarget. The initial value is 0.
-
nglGetVertexAttribLdv
public static void nglGetVertexAttribLdv(int index, int pname, long params) Unsafe version of:GetVertexAttribLdv -
glGetVertexAttribLdv
Double version ofGetVertexAttribiv.- Parameters:
index- the generic vertex attribute parameter to be queriedpname- the symbolic name of the vertex attribute parameter to be queriedparams- the requested data
-
glVertexArrayVertexAttribLOffsetEXT
public static void glVertexArrayVertexAttribLOffsetEXT(int vaobj, int buffer, int index, int size, int type, int stride, long offset) DSA version ofVertexAttribLPointer.- Parameters:
vaobj- the vertex array objectbuffer- the buffer objectindex- the index of the generic vertex attribute to be modifiedsize- the number of values per vertex that are stored in the array. The initial value is 4. One of:1 2 3 4 BGRAtype- the data type of each component in the array. Must be:DOUBLEstride- the byte offset between consecutive generic vertex attributes. If stride is 0, the generic vertex attributes are understood to be tightly packed in the array. The initial value is 0.offset- the offset of the first component of the first generic vertex attribute in the array in the data store of the buffer. The initial value is 0.
-
glVertexAttribL1dv
public static void glVertexAttribL1dv(int index, double[] v) Array version of:VertexAttribL1dv -
glVertexAttribL2dv
public static void glVertexAttribL2dv(int index, double[] v) Array version of:VertexAttribL2dv -
glVertexAttribL3dv
public static void glVertexAttribL3dv(int index, double[] v) Array version of:VertexAttribL3dv -
glVertexAttribL4dv
public static void glVertexAttribL4dv(int index, double[] v) Array version of:VertexAttribL4dv -
glGetVertexAttribLdv
public static void glGetVertexAttribLdv(int index, int pname, double[] params) Array version of:GetVertexAttribLdv
-