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 */ /* Indexed mesh with base vertex */
} else if(baseVertex) { } else if(baseVertex) {
#if !defined(MAGNUM_TARGET_GLES2) && !defined(MAGNUM_TARGET_WEBGL)
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES
/* Indexed mesh with base vertex and base instance */ /* 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); glDrawElementsInstancedBaseVertexBaseInstance(GLenum(_primitive), count, GLenum(_indexType), reinterpret_cast<GLvoid*>(indexOffset), instanceCount, baseVertex, baseInstance);
/* Indexed mesh with base vertex */ /* Indexed mesh with base vertex */
else } else
#endif
{
glDrawElementsInstancedBaseVertex(GLenum(_primitive), count, GLenum(_indexType), reinterpret_cast<GLvoid*>(indexOffset), instanceCount, baseVertex); glDrawElementsInstancedBaseVertex(GLenum(_primitive), count, GLenum(_indexType), reinterpret_cast<GLvoid*>(indexOffset), instanceCount, baseVertex);
}
#else #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 #endif
/* Indexed mesh */ /* Indexed mesh */

4
src/Magnum/Mesh.h

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

4
src/Magnum/MeshView.h

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

Loading…
Cancel
Save