Commit: 9d03307033338dc6ce57a2258e4dd01d09f1dcb3 Author: Mitchell Stokes Date: Sun Dec 6 14:35:14 2015 -0800 Branches: master https://developer.blender.org/rB9d03307033338dc6ce57a2258e4dd01d09f1dcb3
BGE: Remove RAS_IRasterizer::IndexPrimitivesMulti() The work that was being done in IndexPrimitiveMulti() is now done by IndexPrimitive() and we always assume multitexture support. =================================================================== M source/gameengine/Rasterizer/RAS_IRasterizer.h M source/gameengine/Rasterizer/RAS_MaterialBucket.cpp M source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_IStorage.h M source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp M source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h M source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp M source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h M source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageIM.cpp M source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageIM.h M source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVA.cpp M source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVA.h M source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVBO.cpp M source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVBO.h =================================================================== diff --git a/source/gameengine/Rasterizer/RAS_IRasterizer.h b/source/gameengine/Rasterizer/RAS_IRasterizer.h index 7fbaf07..618bcbf 100644 --- a/source/gameengine/Rasterizer/RAS_IRasterizer.h +++ b/source/gameengine/Rasterizer/RAS_IRasterizer.h @@ -267,7 +267,6 @@ public: * IndexPrimitives: Renders primitives from mesh slot. */ virtual void IndexPrimitives(class RAS_MeshSlot &ms) = 0; - virtual void IndexPrimitivesMulti(class RAS_MeshSlot &ms) = 0; /** * IndexPrimitives_3DText will render text into the polygons. diff --git a/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp b/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp index 2078fc9..13d49c5 100644 --- a/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp +++ b/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp @@ -649,15 +649,13 @@ void RAS_MaterialBucket::RenderMeshSlot(const MT_Transform& cameratrans, RAS_IRa else ms.m_bDisplayList = true; - // for text drawing using faces - if (m_material->GetDrawingMode() & RAS_IRasterizer::RAS_RENDER_3DPOLYGON_TEXT) + if (m_material->GetDrawingMode() & RAS_IRasterizer::RAS_RENDER_3DPOLYGON_TEXT) { + // for text drawing using faces rasty->IndexPrimitives_3DText(ms, m_material); - // for multitexturing - else if ((m_material->GetFlag() & (RAS_MULTITEX|RAS_BLENDERGLSL))) - rasty->IndexPrimitivesMulti(ms); - // use normal IndexPrimitives - else + } + else { rasty->IndexPrimitives(ms); + } rasty->PopMatrix(); } diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_IStorage.h b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_IStorage.h index bfa6e1a..ae0cdcd 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_IStorage.h +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_IStorage.h @@ -44,7 +44,6 @@ public: virtual void Exit()=0; virtual void IndexPrimitives(RAS_MeshSlot& ms)=0; - virtual void IndexPrimitivesMulti(RAS_MeshSlot& ms)=0; virtual void SetDrawingMode(int drawingmode)=0; diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp index 34184f7..275e4b4 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.cpp @@ -243,30 +243,6 @@ void RAS_ListRasterizer::IndexPrimitives(RAS_MeshSlot& ms) if (ms.m_bDisplayList) { localSlot = FindOrAdd(ms); localSlot->DrawList(); - if (localSlot->End()) { - // save slot here too, needed for replicas and object using same mesh - // => they have the same vertexarray but different mesh slot - ms.m_DisplayList = localSlot; - return; - } - } - - RAS_OpenGLRasterizer::IndexPrimitives(ms); - - if (ms.m_bDisplayList) { - localSlot->EndList(); - ms.m_DisplayList = localSlot; - } -} - - -void RAS_ListRasterizer::IndexPrimitivesMulti(RAS_MeshSlot& ms) -{ - RAS_ListSlot* localSlot =0; - - if (ms.m_bDisplayList) { - localSlot = FindOrAdd(ms); - localSlot->DrawList(); if (localSlot->End()) { // save slot here too, needed for replicas and object using same mesh @@ -276,7 +252,7 @@ void RAS_ListRasterizer::IndexPrimitivesMulti(RAS_MeshSlot& ms) } } - RAS_OpenGLRasterizer::IndexPrimitivesMulti(ms); + RAS_OpenGLRasterizer::IndexPrimitives(ms); if (ms.m_bDisplayList) { localSlot->EndList(); diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h index 5e1c662..420bf5d 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_ListRasterizer.h @@ -60,7 +60,6 @@ public: virtual ~RAS_ListRasterizer(); virtual void IndexPrimitives(class RAS_MeshSlot& ms); - virtual void IndexPrimitivesMulti(class RAS_MeshSlot& ms); virtual bool Init(); virtual void Exit(); diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp index 2854557..4629b91 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp @@ -740,14 +740,6 @@ void RAS_OpenGLRasterizer::IndexPrimitives(RAS_MeshSlot& ms) m_storage->IndexPrimitives(ms); } -void RAS_OpenGLRasterizer::IndexPrimitivesMulti(RAS_MeshSlot& ms) -{ - if (ms.m_pDerivedMesh) - m_failsafe_storage->IndexPrimitivesMulti(ms); - else - m_storage->IndexPrimitivesMulti(ms); -} - void RAS_OpenGLRasterizer::SetProjectionMatrix(MT_CmMatrix4x4 &mat) { glMatrixMode(GL_PROJECTION); diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h index 67a11f6..10e11bc 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.h @@ -186,7 +186,6 @@ public: virtual void SwapBuffers(); virtual void IndexPrimitives(class RAS_MeshSlot &ms); - virtual void IndexPrimitivesMulti(class RAS_MeshSlot &ms); virtual void IndexPrimitives_3DText(class RAS_MeshSlot &ms, class RAS_IPolyMaterial *polymat); virtual void SetProjectionMatrix(MT_CmMatrix4x4 &mat); diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageIM.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageIM.cpp index 2cf6088..2fd25e4 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageIM.cpp +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageIM.cpp @@ -59,16 +59,6 @@ void RAS_StorageIM::Exit() { } -void RAS_StorageIM::IndexPrimitives(RAS_MeshSlot& ms) -{ - IndexPrimitivesInternal(ms, false); -} - -void RAS_StorageIM::IndexPrimitivesMulti(class RAS_MeshSlot& ms) -{ - IndexPrimitivesInternal(ms, true); -} - void RAS_StorageIM::TexCoord(const RAS_TexVert &tv) { int unit; @@ -206,15 +196,17 @@ static DMDrawOption CheckTexDM(MTexPoly *mtexpoly, const bool has_mcol, int matn return DM_DRAW_OPTION_SKIP; } -void RAS_StorageIM::IndexPrimitivesInternal(RAS_MeshSlot& ms, bool multi) -{ + + +void RAS_StorageIM::IndexPrimitives(RAS_MeshSlot& ms) +{ bool obcolor = ms.m_bObjectColor; bool wireframe = m_drawingmode <= RAS_IRasterizer::KX_WIREFRAME; MT_Vector4& rgba = ms.m_RGBAcolor; RAS_MeshSlot::iterator it; if (ms.m_pDerivedMesh) { - // mesh data is in derived mesh, + // mesh data is in derived mesh, current_bucket = ms.m_bucket; current_polymat = current_bucket->GetPolyMaterial(); current_ms = &ms; @@ -229,7 +221,7 @@ void RAS_StorageIM::IndexPrimitivesInternal(RAS_MeshSlot& ms, bool multi) this->SetCullFace(false); if (current_polymat->GetFlag() & RAS_BLENDERGLSL) { - // GetMaterialIndex return the original mface material index, + // GetMaterialIndex return the original mface material index, // increment by 1 to match what derived mesh is doing current_blmat_nr = current_polymat->GetMaterialIndex()+1; // For GLSL we need to retrieve the GPU material attribute @@ -255,7 +247,7 @@ void RAS_StorageIM::IndexPrimitivesInternal(RAS_MeshSlot& ms, bool multi) for (ms.begin(it); !ms.end(it); ms.next(it)) { RAS_TexVert *vertex; size_t i, j, numvert; - + numvert = it.array->m_type; if (it.array->m_type == RAS_DisplayArray::LINE) { @@ -294,10 +286,7 @@ void RAS_StorageIM::IndexPrimitivesInternal(RAS_MeshSlot& ms, bool multi) glNormal3fv(vertex->getNormal()); - if (multi) - TexCoord(*vertex); - else - glTexCoord2fv(vertex->getUV(0)); + TexCoord(*vertex); } glVertex3fv(vertex->getXYZ()); diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageIM.h b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageIM.h index 54ba2a5..e98b3ab 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageIM.h +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageIM.h @@ -41,7 +41,6 @@ public: virtual void Exit(); virtual void IndexPrimitives(RAS_MeshSlot& ms); - virtual void IndexPrimitivesMulti(class RAS_MeshSlot& ms); virtual void SetDrawingMode(int drawingmode){m_drawingmode=drawingmode;}; @@ -56,8 +55,6 @@ protected: void TexCoord(const RAS_TexVert &tv); void SetCullFace(bool enable); - void IndexPrimitivesInternal(RAS_MeshSlot& ms, bool multi); - #ifdef WITH_CXX_GUARDEDALLOC public: diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVA.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVA.cpp index c2980a6..cf77ebf 100644 --- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVA.cpp +++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageVA.cpp @@ -56,68 +56,7 @@ void RAS_StorageVA::Exit() { } -void RAS_StorageVA::IndexPrimitives(RAS_MeshSlot& ms) -{ - static const GLsizei stride = sizeof(RAS_TexVert); - bool wireframe = m_drawingmode <= RAS_IRasterizer::KX_WIREFRAME; - RAS_MeshSlot::iterator it; - GLenum drawmode; - - if (!wireframe) - glEnableClientState(GL_TEXTURE_COORD_ARRAY); - glEnableClientState(GL_VERTEX_ARRAY); - glEnableClientState(GL_NORMAL_ARRAY); - - // use glDrawElements to draw each vertexarray - for (ms.begin(it); !ms.end(it); ms.next(it)) { - if (it.totindex == 0) - continue; - - // drawing mode - if (it.array->m_type == RAS_DisplayArray::TRIANGLE) - drawmode = GL_TRIANGLES; - else if (it.array->m_type == RAS_DisplayArray::QUAD) - drawmode = GL_QUADS; - else - drawmode = GL_LINES; - - // colors - if (drawmode != GL_LINES && !wireframe) { - if (ms.m_bObjectColor) { - const MT_Vector4& rgba = ms.m_RGBAcolor; - - glDisableClientState(GL_COLOR_ARRAY); - glColor4d(rgba[0], rgba[1], rgba[2], rgba[3]); - } - else { - glColor4f(0.0f, 0.0f, 0.0f, 1.0f); - glEnableClientState(GL_COLOR_ARRAY); - } - } - else - glColor4f(0.0f, 0.0f, 0.0f, 1.0f); - - glVertexPointer(3, GL_FLOAT, stride, it.vertex->getXYZ()); - glNormalPointer(GL_FLOAT, stride, it.vertex-> @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs