Browse Source

Updates for base vertex support in ES 3.2.

pull/231/head
Vladimír Vondruš 9 years ago
parent
commit
cd60f68487
  1. 10
      src/Magnum/Mesh.cpp
  2. 4
      src/Magnum/Mesh.h
  3. 4
      src/Magnum/MeshView.h

10
src/Magnum/Mesh.cpp

@ -343,16 +343,20 @@ void Mesh::drawInternal(Int count, Int baseVertex, Int instanceCount, GLintptr i
/* Indexed mesh with base vertex */
} else if(baseVertex) {
#if !defined(MAGNUM_TARGET_GLES2) && !defined(MAGNUM_TARGET_WEBGL)
#ifndef MAGNUM_TARGET_GLES
/* Indexed mesh with base vertex and base instance */
if(baseInstance)
if(baseInstance) {
glDrawElementsInstancedBaseVertexBaseInstance(GLenum(_primitive), count, GLenum(_indexType), reinterpret_cast<GLvoid*>(indexOffset), instanceCount, baseVertex, baseInstance);
/* Indexed mesh with base vertex */
else
} else
#endif
{
glDrawElementsInstancedBaseVertex(GLenum(_primitive), count, GLenum(_indexType), reinterpret_cast<GLvoid*>(indexOffset), instanceCount, baseVertex);
}
#else
CORRADE_ASSERT(false, "Mesh::draw(): desktop OpenGL is required for base vertex specification in indexed meshes", );
CORRADE_ASSERT(false, "Mesh::draw(): OpenGL ES 3.2 or desktop GL is required for base vertex specification in indexed meshes", );
#endif
/* Indexed mesh */

4
src/Magnum/Mesh.h

@ -652,8 +652,8 @@ class MAGNUM_EXPORT Mesh: public AbstractObject {
* @see @ref setCount(), @ref setBaseInstance()
* @requires_gl32 Extension @extension{ARB,draw_elements_base_vertex}
* for indexed meshes
* @requires_gl Base vertex cannot be specified for indexed meshes in
* OpenGL ES or WebGL.
* @requires_gles32 Base vertex cannot be specified for indexed meshes
* in OpenGL ES 3.1 or WebGL.
*/
Mesh& setBaseVertex(Int baseVertex) {
_baseVertex = baseVertex;

4
src/Magnum/MeshView.h

@ -136,8 +136,8 @@ class MAGNUM_EXPORT MeshView {
* Default is @cpp 0 @ce.
* @requires_gl32 Extension @extension{ARB,draw_elements_base_vertex}
* for indexed meshes
* @requires_gl Base vertex cannot be specified for indexed meshes in
* OpenGL ES or WebGL.
* @requires_gles32 Base vertex cannot be specified for indexed meshes
* in OpenGL ES 3.1 or WebGL.
*/
MeshView& setBaseVertex(Int baseVertex) {
_baseVertex = baseVertex;

Loading…
Cancel
Save