/** DoubleBuffer version of: {@link #glBufferData BufferData} */ public static void glBufferData(int target, DoubleBuffer data, int usage) { nglBufferData(target, data.remaining() << 3, memAddress(data), usage); }
/** * <a href="http://www.opengl.org/sdk/docs/man/html/glBufferData.xhtml">OpenGL SDK Reference</a> * Creates and initializes a buffer object's data store. * * <p>{@code usage} is a hint to the GL implementation as to how a buffer object's data store will * be accessed. This enables the GL implementation to make more intelligent decisions that may * significantly impact buffer object performance. It does not, however, constrain the actual * usage of the data store. {@code usage} can be broken down into two parts: first, the frequency * of access (modification and usage), and second, the nature of that access. The frequency of * access may be one of these: * * <ul> * <li><em>STREAM</em> - The data store contents will be modified once and used at most a few * times. * <li><em>STATIC</em> - The data store contents will be modified once and used many times. * <li><em>DYNAMIC</em> - The data store contents will be modified repeatedly and used many * times. * </ul> * * The nature of access may be one of these: * * <ul> * <li><em>DRAW</em> - The data store contents are modified by the application, and used as the * source for GL drawing and image specification commands. * <li><em>READ</em> - The data store contents are modified by reading data from the GL, and * used to return that data when queried by the application. * <li><em>COPY</em> - The data store contents are modified by reading data from the GL, and * used as the source for GL drawing and image specification commands. * </ul> * * @param target the target buffer object. One of:<br> * {@link #GL_ARRAY_BUFFER ARRAY_BUFFER}, {@link #GL_ELEMENT_ARRAY_BUFFER * ELEMENT_ARRAY_BUFFER}, {@link GL21#GL_PIXEL_PACK_BUFFER PIXEL_PACK_BUFFER}, {@link * GL21#GL_PIXEL_UNPACK_BUFFER PIXEL_UNPACK_BUFFER}, {@link GL30#GL_TRANSFORM_FEEDBACK_BUFFER * TRANSFORM_FEEDBACK_BUFFER}, {@link GL31#GL_UNIFORM_BUFFER UNIFORM_BUFFER}, {@link * GL31#GL_TEXTURE_BUFFER TEXTURE_BUFFER}, {@link GL31#GL_COPY_READ_BUFFER COPY_READ_BUFFER}, * {@link GL31#GL_COPY_WRITE_BUFFER COPY_WRITE_BUFFER}, {@link GL40#GL_DRAW_INDIRECT_BUFFER * DRAW_INDIRECT_BUFFER}, {@link GL42#GL_ATOMIC_COUNTER_BUFFER ATOMIC_COUNTER_BUFFER}, {@link * GL43#GL_DISPATCH_INDIRECT_BUFFER DISPATCH_INDIRECT_BUFFER}, {@link * GL43#GL_SHADER_STORAGE_BUFFER SHADER_STORAGE_BUFFER}, {@link * ARBIndirectParameters#GL_PARAMETER_BUFFER_ARB PARAMETER_BUFFER_ARB} * @param size the size in bytes of the buffer object's new data store * @param data a pointer to data that will be copied into the data store for initialization, or * NULL if no data is to be copied * @param usage the expected usage pattern of the data store. One of:<br> * {@link #GL_STREAM_DRAW STREAM_DRAW}, {@link #GL_STREAM_READ STREAM_READ}, {@link * #GL_STREAM_COPY STREAM_COPY}, {@link #GL_STATIC_DRAW STATIC_DRAW}, {@link #GL_STATIC_READ * STATIC_READ}, {@link #GL_STATIC_COPY STATIC_COPY}, {@link #GL_DYNAMIC_DRAW DYNAMIC_DRAW}, * {@link #GL_DYNAMIC_READ DYNAMIC_READ}, {@link #GL_DYNAMIC_COPY DYNAMIC_COPY} */ public static void glBufferData(int target, long size, ByteBuffer data, int usage) { if (LWJGLUtil.CHECKS) if (data != null) checkBuffer(data, size); nglBufferData(target, size, memAddressSafe(data), usage); }
/** Alternative version of: {@link #glBufferData BufferData} */ public static void glBufferData(int target, long size, int usage) { nglBufferData(target, size, 0L, usage); }
/** Unsafe version of {@link #glBufferData BufferData} */ @JavadocExclude public static void nglBufferData(int target, long size, long data, int usage) { long __functionAddress = getInstance().BufferData; nglBufferData(target, size, data, usage, __functionAddress); }