You’ll need to code up and grab your own extension procs for the time being.
Quick and dirty loader for tinkering…
//
// Declare stuff (just paste and comma delimit from spec)
//
#define GLDECL(ret, name, ...) \
typedef ret (APIENTRYP PFN##name##PROC)(__VA_ARGS__); \
PFN##name##PROC name = NULL;
// ------------------------------------------------------------------------------------------------
// NV_shader_buffer_load
// -----------------------------------------------------------------------------------------------
// Buffer operations
GLDECL(void, glMakeBufferResidentNV, GLenum target, GLenum access);
GLDECL(void, glNamedMakeBufferResidentNV, GLuint buffer, GLenum access); // Not in beta
GLDECL(void, glMakeBufferNonResidentNV, GLenum target);
GLDECL(void, glNamedMakeBufferNonResidentNV, GLuint buffer); // Not in beta
GLDECL(GLboolean, glIsBufferResidentNV, GLenum target);
GLDECL(GLboolean, glIsNamedBufferResidentNV, GLuint buffer);
GLDECL(void, glGetBufferParameterui64vNV, GLenum target, GLenum pname, GLuint64EXT *params);
GLDECL(void, glGetNamedBufferParameterui64vNV, GLuint buffer, GLenum pname, GLuint64EXT *params);
// New Get flavor
GLDECL(void, glGetIntegerui64vNV, GLenum value, GLuint64EXT *result);
// (Named) program uniform get/set
GLDECL(void, glUniformui64NV, GLint location, GLuint64EXT value);
GLDECL(void, glUniformui64vNV, GLint location, GLsizei count, GLuint64EXT *value);
GLDECL(void, glGetUniformui64vNV, GLuint program, GLint location, GLuint64EXT *params);
GLDECL(void, glProgramUniformui64NV, GLuint program, GLint location, GLuint64EXT value);
GLDECL(void, glProgramUniformui64vNV, GLuint program, GLint location, GLsizei count, GLuint64EXT *value);
enum NV_shader_buffer_load
{
// Accepted by the <pname> parameter of GetBufferParameterui64vNV, GetNamedBufferParameterui64vNV:
GL_BUFFER_GPU_ADDRESS_NV = 0x8F1D,
// Returned by the <type> parameter of GetActiveUniform:
GL_GPU_ADDRESS_NV = 0x8F34,
// Accepted by the <value> parameter of GetIntegerui64vNV:
GL_MAX_SHADER_BUFFER_ADDRESS_NV = 0x8F35,
};
// ------------------------------------------------------------------------------------------------
// NV_vertex_buffer_unified_memory
// ------------------------------------------------------------------------------------------------
GLDECL(void, glBufferAddressRangeNV, GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
GLDECL(void, glVertexFormatNV, GLint size, GLenum type, GLsizei stride);
GLDECL(void, glNormalFormatNV, GLenum type, GLsizei stride);
GLDECL(void, glColorFormatNV, GLint size, GLenum type, GLsizei stride);
GLDECL(void, glIndexFormatNV, GLenum type, GLsizei stride);
GLDECL(void, glTexCoordFormatNV, GLint size, GLenum type, GLsizei stride);
GLDECL(void, glEdgeFlagFormatNV, GLsizei stride);
GLDECL(void, glSecondaryColorFormatNV, GLint size, GLenum type, GLsizei stride);
GLDECL(void, glFogCoordFormatNV, GLenum type, GLsizei stride);
GLDECL(void, glVertexAttribFormatNV, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
GLDECL(void, glVertexAttribIFormatNV, GLuint index, GLint size, GLenum type, GLsizei stride);
GLDECL(void, glGetIntegerui64i_vNV, GLenum value, GLuint index, GLuint64EXT result[]);
enum NV_vertex_buffer_unified_memory
{
// Accepted by the <cap> parameter of DisableClientState,
// EnableClientState, IsEnabled:
GL_VERTEX_ATTRIB_ARRAY_UNIFIED_NV = 0x8F1E,
GL_ELEMENT_ARRAY_UNIFIED_NV = 0x8F1F,
// Accepted by the <pname> parameter of BufferAddressRangeNV
// and the <value> parameter of GetIntegerui64i_vNV:
GL_VERTEX_ATTRIB_ARRAY_ADDRESS_NV = 0x8F20,
GL_TEXTURE_COORD_ARRAY_ADDRESS_NV = 0x8F25,
// Accepted by the <pname> parameter of BufferAddressRangeNV
// and the <value> parameter of GetIntegerui64vNV:
GL_VERTEX_ARRAY_ADDRESS_NV = 0x8F21,
GL_NORMAL_ARRAY_ADDRESS_NV = 0x8F22,
GL_COLOR_ARRAY_ADDRESS_NV = 0x8F23,
GL_INDEX_ARRAY_ADDRESS_NV = 0x8F24,
GL_EDGE_FLAG_ARRAY_ADDRESS_NV = 0x8F26,
GL_SECONDARY_COLOR_ARRAY_ADDRESS_NV = 0x8F27,
GL_FOG_COORD_ARRAY_ADDRESS_NV = 0x8F28,
GL_ELEMENT_ARRAY_ADDRESS_NV = 0x8F29,
// Accepted by the <target> parameter of GetIntegeri_vNV:
GL_VERTEX_ATTRIB_ARRAY_LENGTH_NV = 0x8F2A,
GL_TEXTURE_COORD_ARRAY_LENGTH_NV = 0x8F2F,
// Accepted by the <value> parameter of GetIntegerv:
GL_VERTEX_ARRAY_LENGTH_NV = 0x8F2B,
GL_NORMAL_ARRAY_LENGTH_NV = 0x8F2C,
GL_COLOR_ARRAY_LENGTH_NV = 0x8F2D,
GL_INDEX_ARRAY_LENGTH_NV = 0x8F2E,
GL_EDGE_FLAG_ARRAY_LENGTH_NV = 0x8F30,
GL_SECONDARY_COLOR_ARRAY_LENGTH_NV = 0x8F31,
GL_FOG_COORD_ARRAY_LENGTH_NV = 0x8F32,
GL_ELEMENT_ARRAY_LENGTH_NV = 0x8F33,
};
//
// Grab procs...
//
#undef GLDECL
#define GLDECL(ret, name, ...) \
name = (PFN##name##PROC)wglGetProcAddress(#name); \
if (name == 0) cerr << "Missing extension: " << #name << endl;
// Add these to your init function
GLDECL(void, glMakeBufferResidentNV, GLenum target, GLenum access);
GLDECL(void, glMakeBufferNonResidentNV, GLenum target);
GLDECL(GLboolean, glIsBufferResidentNV, GLenum target);
GLDECL(void, glNamedMakeBufferResidentNV, GLuint buffer, GLenum access);
GLDECL(void, glNamedMakeBufferNonResidentNV, GLuint buffer);
GLDECL(GLboolean, glIsNamedBufferResidentNV, GLuint buffer);
GLDECL(void, glGetBufferParameterui64vNV, GLenum target, GLenum pname, GLuint64EXT *params);
GLDECL(void, glGetNamedBufferParameterui64vNV, GLuint buffer, GLenum pname, GLuint64EXT *params);
GLDECL(void, glGetIntegerui64vNV, GLenum value, GLuint64EXT *result);
GLDECL(void, glUniformui64NV, GLint location, GLuint64EXT value);
GLDECL(void, glUniformui64vNV, GLint location, GLsizei count, GLuint64EXT *value);
GLDECL(void, glGetUniformui64vNV, GLuint program, GLint location, GLuint64EXT *params);
GLDECL(void, glProgramUniformui64NV, GLuint program, GLint location, GLuint64EXT value);
GLDECL(void, glProgramUniformui64vNV, GLuint program, GLint location, GLsizei count, GLuint64EXT *value);
GLDECL(void, glBufferAddressRangeNV, GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
GLDECL(void, glVertexFormatNV, GLint size, GLenum type, GLsizei stride);
GLDECL(void, glNormalFormatNV, GLenum type, GLsizei stride);
GLDECL(void, glColorFormatNV, GLint size, GLenum type, GLsizei stride);
GLDECL(void, glIndexFormatNV, GLenum type, GLsizei stride);
GLDECL(void, glTexCoordFormatNV, GLint size, GLenum type, GLsizei stride);
GLDECL(void, glEdgeFlagFormatNV, GLsizei stride);
GLDECL(void, glSecondaryColorFormatNV, GLint size, GLenum type, GLsizei stride);
GLDECL(void, glFogCoordFormatNV, GLenum type, GLsizei stride);
GLDECL(void, glVertexAttribFormatNV, GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
GLDECL(void, glVertexAttribIFormatNV, GLuint index, GLint size, GLenum type, GLsizei stride);
GLDECL(void, glGetIntegerui64i_vNV, GLenum value, GLuint index, GLuint64EXT result[]);