Top Description Constructors Methods
org.lwjgl.opengles

public Class NVBindlessTexture

extends Object
Class Inheritance
Imports
java.nio.*, org.lwjgl.system.*

Native bindings to the NV_bindless_texture extension.

This extension allows OpenGL applications to access texture objects in shaders without first binding each texture to one of a limited number of texture image units. Using this extension, an application can query a 64-bit unsigned integer texture handle for each texture that it wants to access and then use that handle directly in GLSL or assembly-based shaders. The ability to access textures without having to bind and/or re-bind them is similar to the capability provided by the NV_shader_buffer_load extension that allows shaders to access buffer objects without binding them. In both cases, these extensions significantly reduce the amount of API and internal GL driver overhead needed to manage resource bindings.

This extension also provides similar capability for the image load, store, and atomic functionality provided by OpenGL 4.2, OpenGL ES 3.1 and the ARB_shader_image_load_store and EXT_shader_image_load_store extensions, where a texture can be accessed without first binding it to an image unit. An image handle can be extracted from a texture object using an API with a set of parameters similar to those for BindImageTextureEXT.

This extension adds no new data types to GLSL. Instead, it uses existing sampler and image data types and allows them to be populated with texture and image handles. This extension does permit sampler and image data types to be used in more contexts than in unextended GLSL 4.00. In particular, sampler and image types may be used as shader inputs/outputs, temporary variables, and uniform block members, and may be assigned to by shader code. Constructors are provided to convert 64-bit unsigned integer values to and from sampler and image data types. Additionally, new APIs are provided to load values for sampler and image uniforms with 64-bit handle inputs. The use of existing integer-based Uniform* APIs is still permitted, in which case the integer specified will identify a texture image or image unit. For samplers and images with values specified as texture image or image units, the GL implemenation will translate the unit number to an internal handle as required.

To access texture or image resources using handles, the handles must first be made resident. Accessing a texture or image by handle without first making it resident can result in undefined results, including program termination. Since the amount of texture memory required by an application may exceed the amount of memory available to the system, this extension provides API calls allowing applications to manage overall texture memory consumption by making a texture resident and non-resident as required.

Requires GLES 3.0.

Constructor Summary

AccessConstructor and Description
protected

Method Summary

Modifier and TypeMethod and Description
public static native long
glGetImageHandleNV(int texture, int level, boolean layered, int layer, int format)

public static native long
glGetTextureHandleNV(int texture)

public static native long
glGetTextureSamplerHandleNV(int texture, int sampler)

public static native boolean
public static native boolean
public static native void
public static native void
glMakeImageHandleResidentNV(long handle, int access)

public static native void
public static native void
public static native void
glProgramUniformHandleui64NV(int program, int location, long value)

public static void
glProgramUniformHandleui64vNV(int program, int location, LongBuffer values)

public static void
glProgramUniformHandleui64vNV(int program, int location, long[] values)

Array version of: ProgramUniformHandleui64vNV

public static native void
glUniformHandleui64NV(int location, long value)

public static void
glUniformHandleui64vNV(int location, LongBuffer values)

public static void
glUniformHandleui64vNV(int location, long[] values)

Array version of: UniformHandleui64vNV

public static native void
nglProgramUniformHandleui64vNV(int program, int location, int count, long values)

public static native void
nglUniformHandleui64vNV(int location, int count, long values)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

NVBindlessTextureback to summary
protected NVBindlessTexture()

Method Detail

glGetImageHandleNVback to summary
public static native long glGetImageHandleNV(int texture, int level, boolean layered, int layer, int format)
Annotations
@NativeType:GLuint64
glGetTextureHandleNVback to summary
public static native long glGetTextureHandleNV(int texture)
Annotations
@NativeType:GLuint64
glGetTextureSamplerHandleNVback to summary
public static native long glGetTextureSamplerHandleNV(int texture, int sampler)
Annotations
@NativeType:GLuint64
glIsImageHandleResidentNVback to summary
public static native boolean glIsImageHandleResidentNV(long handle)
Annotations
@NativeType:GLboolean
glIsTextureHandleResidentNVback to summary
public static native boolean glIsTextureHandleResidentNV(long handle)
Annotations
@NativeType:GLboolean
glMakeImageHandleNonResidentNVback to summary
public static native void glMakeImageHandleNonResidentNV(long handle)
glMakeImageHandleResidentNVback to summary
public static native void glMakeImageHandleResidentNV(long handle, int access)
glMakeTextureHandleNonResidentNVback to summary
public static native void glMakeTextureHandleNonResidentNV(long handle)
glMakeTextureHandleResidentNVback to summary
public static native void glMakeTextureHandleResidentNV(long handle)
glProgramUniformHandleui64NVback to summary
public static native void glProgramUniformHandleui64NV(int program, int location, long value)
glProgramUniformHandleui64vNVback to summary
public static void glProgramUniformHandleui64vNV(int program, int location, LongBuffer values)
glProgramUniformHandleui64vNVback to summary
public static void glProgramUniformHandleui64vNV(int program, int location, long[] values)

Array version of: ProgramUniformHandleui64vNV

glUniformHandleui64NVback to summary
public static native void glUniformHandleui64NV(int location, long value)
glUniformHandleui64vNVback to summary
public static void glUniformHandleui64vNV(int location, LongBuffer values)
glUniformHandleui64vNVback to summary
public static void glUniformHandleui64vNV(int location, long[] values)

Array version of: UniformHandleui64vNV

nglProgramUniformHandleui64vNVback to summary
public static native void nglProgramUniformHandleui64vNV(int program, int location, int count, long values)
nglUniformHandleui64vNVback to summary
public static native void nglUniformHandleui64vNV(int location, int count, long values)