summaryrefslogtreecommitdiff
path: root/src/mbgl/gl/context.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/gl/context.cpp')
-rw-r--r--src/mbgl/gl/context.cpp38
1 files changed, 21 insertions, 17 deletions
diff --git a/src/mbgl/gl/context.cpp b/src/mbgl/gl/context.cpp
index 2463993cf0..64365a1018 100644
--- a/src/mbgl/gl/context.cpp
+++ b/src/mbgl/gl/context.cpp
@@ -40,15 +40,6 @@ static_assert(underlying_type(RenderbufferType::DepthComponent) == GL_DEPTH_COMP
static_assert(underlying_type(RenderbufferType::DepthComponent) == GL_DEPTH_COMPONENT16, "OpenGL type mismatch");
#endif // MBGL_USE_GLES2
-
-static_assert(underlying_type(PrimitiveType::Points) == GL_POINTS, "OpenGL type mismatch");
-static_assert(underlying_type(PrimitiveType::Lines) == GL_LINES, "OpenGL type mismatch");
-static_assert(underlying_type(PrimitiveType::LineLoop) == GL_LINE_LOOP, "OpenGL type mismatch");
-static_assert(underlying_type(PrimitiveType::LineStrip) == GL_LINE_STRIP, "OpenGL type mismatch");
-static_assert(underlying_type(PrimitiveType::Triangles) == GL_TRIANGLES, "OpenGL type mismatch");
-static_assert(underlying_type(PrimitiveType::TriangleStrip) == GL_TRIANGLE_STRIP, "OpenGL type mismatch");
-static_assert(underlying_type(PrimitiveType::TriangleFan) == GL_TRIANGLE_FAN, "OpenGL type mismatch");
-
static_assert(std::is_same<ProgramID, GLuint>::value, "OpenGL type mismatch");
static_assert(std::is_same<ShaderID, GLuint>::value, "OpenGL type mismatch");
static_assert(std::is_same<BufferID, GLuint>::value, "OpenGL type mismatch");
@@ -684,26 +675,26 @@ void Context::setCullFaceMode(const CullFaceMode& mode) {
}
#if not MBGL_USE_GLES2
-void Context::setDrawMode(const Points& points) {
+void Context::setDrawMode(const gfx::Points& points) {
pointSize = points.pointSize;
}
#else
-void Context::setDrawMode(const Points&) {
+void Context::setDrawMode(const gfx::Points&) {
}
#endif // MBGL_USE_GLES2
-void Context::setDrawMode(const Lines& lines) {
+void Context::setDrawMode(const gfx::Lines& lines) {
lineWidth = lines.lineWidth;
}
-void Context::setDrawMode(const LineStrip& lineStrip) {
+void Context::setDrawMode(const gfx::LineStrip& lineStrip) {
lineWidth = lineStrip.lineWidth;
}
-void Context::setDrawMode(const Triangles&) {
+void Context::setDrawMode(const gfx::Triangles&) {
}
-void Context::setDrawMode(const TriangleStrip&) {
+void Context::setDrawMode(const gfx::TriangleStrip&) {
}
void Context::setDepthMode(const DepthMode& depth) {
@@ -752,11 +743,24 @@ void Context::setColorMode(const ColorMode& color) {
colorMask = color.mask;
}
-void Context::draw(PrimitiveType primitiveType,
+GLenum toGLenum(const gfx::PrimitiveType primitiveType) {
+ switch (primitiveType) {
+ case gfx::PrimitiveType::Points: return GL_POINTS;
+ case gfx::PrimitiveType::Lines: return GL_LINES;
+ case gfx::PrimitiveType::LineLoop: return GL_LINE_LOOP;
+ case gfx::PrimitiveType::LineStrip: return GL_LINE_STRIP;
+ case gfx::PrimitiveType::Triangles: return GL_TRIANGLES;
+ case gfx::PrimitiveType::TriangleStrip: return GL_TRIANGLE_STRIP;
+ case gfx::PrimitiveType::TriangleFan: return GL_TRIANGLE_FAN;
+ }
+ return GL_INVALID_ENUM;
+}
+
+void Context::draw(gfx::PrimitiveType primitiveType,
std::size_t indexOffset,
std::size_t indexLength) {
MBGL_CHECK_ERROR(glDrawElements(
- static_cast<GLenum>(primitiveType),
+ toGLenum(primitiveType),
static_cast<GLsizei>(indexLength),
GL_UNSIGNED_SHORT,
reinterpret_cast<GLvoid*>(sizeof(uint16_t) * indexOffset)));