|
|
|
|
@ -280,7 +280,7 @@ and @fn_gl_keyword{UseProgram}. Mesh limits and implementation-defined values
|
|
|
|
|
(such as @ref maxElementIndex()) are cached, so repeated queries don't result |
|
|
|
|
in repeated @fn_gl{Get} calls. |
|
|
|
|
|
|
|
|
|
If @gl_extension{EXT,direct_state_access} desktop extension and VAOs are |
|
|
|
|
If @gl_extension{ARB,direct_state_access} desktop extension and VAOs are |
|
|
|
|
available, DSA functions are used for specifying attribute locations to avoid |
|
|
|
|
unnecessary calls to @fn_gl{BindBuffer} and @fn_gl{BindVertexArray}. See |
|
|
|
|
documentation of @ref addVertexBuffer() for more information. |
|
|
|
|
@ -699,8 +699,10 @@ class MAGNUM_GL_EXPORT Mesh: public AbstractObject {
|
|
|
|
|
* @ref setCount(), @fn_gl_keyword{BindVertexArray}, |
|
|
|
|
* @fn_gl_keyword{EnableVertexAttribArray}, @fn_gl{BindBuffer}, |
|
|
|
|
* @fn_gl_keyword{VertexAttribPointer} or |
|
|
|
|
* @fn_gl_extension{EnableVertexArrayAttrib,EXT,direct_state_access}, |
|
|
|
|
* @fn_gl_extension_keyword{VertexArrayVertexAttribOffset,EXT,direct_state_access} |
|
|
|
|
* @fn_gl2{EnableVertexArrayAttrib,EnableVertexAttribArray}, |
|
|
|
|
* @fn_gl2{VertexArrayAttribFormat,VertexAttribFormat}, |
|
|
|
|
* @fn_gl2{VertexArrayAttribBinding,VertexAttribBinding} and |
|
|
|
|
* @fn_gl2{VertexArrayVertexBuffer,BindVertexBuffer} |
|
|
|
|
* @requires_gles In WebGL the data must be properly aligned (e.g. all |
|
|
|
|
* float data must start at addresses divisible by four). Also the |
|
|
|
|
* maximum stride of attribute data must be at most 255 bytes. |
|
|
|
|
@ -731,9 +733,11 @@ class MAGNUM_GL_EXPORT Mesh: public AbstractObject {
|
|
|
|
|
* @fn_gl{BindVertexArray}, @fn_gl_keyword{EnableVertexAttribArray}, |
|
|
|
|
* @fn_gl{BindBuffer}, @fn_gl_keyword{VertexAttribPointer}, |
|
|
|
|
* @fn_gl_keyword{VertexAttribDivisor} or |
|
|
|
|
* @fn_gl_extension_keyword{EnableVertexArrayAttrib,EXT,direct_state_access}, |
|
|
|
|
* @fn_gl_extension_keyword{VertexArrayVertexAttribOffset,EXT,direct_state_access}, |
|
|
|
|
* @fn_gl_extension_keyword{VertexArrayVertexAttribDivisor,EXT,direct_state_access} |
|
|
|
|
* @fn_gl2{EnableVertexArrayAttrib,EnableVertexAttribArray}, |
|
|
|
|
* @fn_gl2{VertexArrayAttribFormat,VertexAttribFormat}, |
|
|
|
|
* @fn_gl2{VertexArrayAttribBinding,VertexAttribBinding}, |
|
|
|
|
* @fn_gl2{VertexArrayVertexBuffer,BindVertexBuffer} and |
|
|
|
|
* @fn_gl2{VertexArrayBindingDivisor,VertexBindingDivisor} |
|
|
|
|
* @requires_gl33 Extension @gl_extension{ARB,instanced_arrays} |
|
|
|
|
* @requires_gles30 Extension @gl_extension{ANGLE,instanced_arrays}, |
|
|
|
|
* @gl_extension{EXT,instanced_arrays} or |
|
|
|
|
@ -1107,13 +1111,15 @@ class MAGNUM_GL_EXPORT Mesh: public AbstractObject {
|
|
|
|
|
void MAGNUM_GL_LOCAL attributePointerImplementationDefault(AttributeLayout&& attribute); |
|
|
|
|
void MAGNUM_GL_LOCAL attributePointerImplementationVAO(AttributeLayout&& attribute); |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES |
|
|
|
|
void MAGNUM_GL_LOCAL attributePointerImplementationDSAEXT(AttributeLayout&& attribute); |
|
|
|
|
void MAGNUM_GL_LOCAL attributePointerImplementationVAODSA(AttributeLayout&& attribute); |
|
|
|
|
void MAGNUM_GL_LOCAL attributePointerImplementationVAODSAEXT(AttributeLayout&& attribute); |
|
|
|
|
#endif |
|
|
|
|
void MAGNUM_GL_LOCAL vertexAttribPointer(AttributeLayout& attribute); |
|
|
|
|
|
|
|
|
|
#ifndef MAGNUM_TARGET_GLES |
|
|
|
|
void MAGNUM_GL_LOCAL vertexAttribDivisorImplementationVAO(GLuint index, GLuint divisor); |
|
|
|
|
void MAGNUM_GL_LOCAL vertexAttribDivisorImplementationDSAEXT(GLuint index, GLuint divisor); |
|
|
|
|
void MAGNUM_GL_LOCAL vertexAttribDivisorImplementationVAODSA(GLuint index, GLuint divisor); |
|
|
|
|
void MAGNUM_GL_LOCAL vertexAttribDivisorImplementationVAODSAEXT(GLuint index, GLuint divisor); |
|
|
|
|
#elif defined(MAGNUM_TARGET_GLES2) |
|
|
|
|
void MAGNUM_GL_LOCAL vertexAttribDivisorImplementationANGLE(GLuint index, GLuint divisor); |
|
|
|
|
#ifndef MAGNUM_TARGET_WEBGL |
|
|
|
|
@ -1128,6 +1134,9 @@ class MAGNUM_GL_EXPORT Mesh: public AbstractObject {
|
|
|
|
|
|
|
|
|
|
void MAGNUM_GL_LOCAL bindIndexBufferImplementationDefault(Buffer&); |
|
|
|
|
void MAGNUM_GL_LOCAL bindIndexBufferImplementationVAO(Buffer& buffer); |
|
|
|
|
#ifndef MAGNUM_TARGET_GLES |
|
|
|
|
void MAGNUM_GL_LOCAL bindIndexBufferImplementationVAODSA(Buffer& buffer); |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
void MAGNUM_GL_LOCAL bindImplementationDefault(); |
|
|
|
|
void MAGNUM_GL_LOCAL bindImplementationVAO(); |
|
|
|
|
|