From 55ee46122971a75c3fd5eed655825c368895c069 Mon Sep 17 00:00:00 2001 From: Christopher Tenter Date: Mon, 26 Nov 2012 11:37:58 +0000 Subject: [PATCH] support for immediate mode in new renderer git-svn-id: http://www.openflipper.org/svnrepo/OpenFlipper/branches/Free@15868 383ad7c9-94d9-4d36-a494-682f7c89f535 --- Renderer.cc | 46 +++++++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/Renderer.cc b/Renderer.cc index 0d3171e..b17b652 100644 --- a/Renderer.cc +++ b/Renderer.cc @@ -368,29 +368,37 @@ void Renderer::bindObjectRenderStates(ACG::RenderObject* _obj) void Renderer::drawObject(ACG::RenderObject* _obj) { - // indexed drawing? - bool noIndices = true; - if (_obj->indexBuffer || _obj->sysmemIndexBuffer) - noIndices = false; + if (_obj->numIndices) + { + // indexed drawing? + bool noIndices = true; + if (_obj->indexBuffer || _obj->sysmemIndexBuffer) + noIndices = false; - glPolygonMode(GL_FRONT_AND_BACK, _obj->fillMode); + glPolygonMode(GL_FRONT_AND_BACK, _obj->fillMode); - if (noIndices) - glDrawArrays(_obj->primitiveMode, _obj->indexOffset, _obj->numIndices); - else - { - // ------------------------------------------ - // index offset stuff not tested - int indexSize = 0; - switch (_obj->indexType) + if (noIndices) + glDrawArrays(_obj->primitiveMode, _obj->indexOffset, _obj->numIndices); + else { - case GL_UNSIGNED_INT: indexSize = 4; break; - case GL_UNSIGNED_SHORT: indexSize = 2; break; - default: indexSize = 1; break; - } + // ------------------------------------------ + // index offset stuff not tested + int indexSize = 0; + switch (_obj->indexType) + { + case GL_UNSIGNED_INT: indexSize = 4; break; + case GL_UNSIGNED_SHORT: indexSize = 2; break; + default: indexSize = 1; break; + } - glDrawElements(_obj->primitiveMode, _obj->numIndices, _obj->indexType, - ((const char*)_obj->sysmemIndexBuffer) + _obj->indexOffset * indexSize); + glDrawElements(_obj->primitiveMode, _obj->numIndices, _obj->indexType, + ((const char*)_obj->sysmemIndexBuffer) + _obj->indexOffset * indexSize); + } + } + else + { + // user defined draw-call + _obj->executeImmediateMode(); } } -- GitLab