Skip to content

Commit

Permalink
Implement support for gl 33
Browse files Browse the repository at this point in the history
  • Loading branch information
vlj committed Aug 31, 2014
1 parent 1bd6f20 commit 82f84cf
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 24 deletions.
2 changes: 1 addition & 1 deletion src/graphics/irr_driver.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ class IrrDriver : public IEventReceiver, public NoCopy

bool hasARB_base_instance() const
{
return hasBaseInstance;
return false;
}

bool hasVSLayerExtension() const
Expand Down
21 changes: 0 additions & 21 deletions src/graphics/stkinstancedscenenode.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,6 @@
#include "stkmesh.hpp"
#include "utils/leak_check.hpp"

class ListInstancedMatDefault : public MeshList<ListInstancedMatDefault, GLMesh *, size_t>
{};

class ListInstancedMatNormalMap : public MeshList<ListInstancedMatNormalMap, GLMesh *, size_t>
{};

class ListInstancedMatAlphaRef : public MeshList<ListInstancedMatAlphaRef, GLMesh *, size_t>
{};

class ListInstancedMatUnlit : public MeshList<ListInstancedMatUnlit, GLMesh *, size_t>
{};

class ListInstancedMatSphereMap : public MeshList<ListInstancedMatSphereMap, GLMesh *, size_t>
{};

class ListInstancedMatDetails : public MeshList<ListInstancedMatDetails, GLMesh *, size_t>
{};

class ListInstancedMatGrass : public MeshList<ListInstancedMatGrass, GLMesh *, size_t, core::vector3df, core::vector3df>
{};

class STKInstancedSceneNode : public irr::scene::CMeshSceneNode
{
protected:
Expand Down
21 changes: 21 additions & 0 deletions src/graphics/stkmesh.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,27 @@ class ListMatUnlit : public MeshList<ListMatUnlit, GLMesh *, core::matrix4, core
class ListMatDetails : public MeshList<ListMatDetails, GLMesh *, core::matrix4, core::matrix4, core::matrix4>
{};

class ListInstancedMatDefault : public MeshList<ListInstancedMatDefault, GLMesh *, size_t>
{};

class ListInstancedMatNormalMap : public MeshList<ListInstancedMatNormalMap, GLMesh *, size_t>
{};

class ListInstancedMatAlphaRef : public MeshList<ListInstancedMatAlphaRef, GLMesh *, size_t>
{};

class ListInstancedMatUnlit : public MeshList<ListInstancedMatUnlit, GLMesh *, size_t>
{};

class ListInstancedMatSphereMap : public MeshList<ListInstancedMatSphereMap, GLMesh *, size_t>
{};

class ListInstancedMatDetails : public MeshList<ListInstancedMatDetails, GLMesh *, size_t>
{};

class ListInstancedMatGrass : public MeshList<ListInstancedMatGrass, GLMesh *, size_t, core::vector3df, core::vector3df>
{};

class ListBlendTransparent : public MeshList<ListBlendTransparent, GLMesh *, core::matrix4, core::matrix4>
{};

Expand Down
40 changes: 38 additions & 2 deletions src/graphics/stkscenemanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,44 @@ parseSceneManager(core::list<scene::ISceneNode*> List, std::vector<STKMeshSceneN
GLMesh *mesh;
if (!IsCulledForSolid)
{
for_in(mesh, node->MeshSolidMaterial[Mat])
MeshForSolidPass[Mat][mesh->mb].push_back(std::make_pair(mesh, *I));
if (irr_driver->hasARB_base_instance())
{
for_in(mesh, node->MeshSolidMaterial[Mat])
MeshForSolidPass[Mat][mesh->mb].push_back(std::make_pair(mesh, *I));
}
else
{
core::matrix4 ModelMatrix, InvModelMatrix;
(*I)->getAbsoluteTransformation().getInverse(ModelMatrix);

for_in(mesh, node->MeshSolidMaterial[Mat])
{
switch (Mat)
{
case MAT_DEFAULT:
ListMatDefault::getInstance()->push_back(STK::make_tuple(mesh, ModelMatrix, InvModelMatrix, mesh->TextureMatrix));
break;
case MAT_ALPHA_REF:
ListMatAlphaRef::getInstance()->push_back(STK::make_tuple(mesh, ModelMatrix, InvModelMatrix, mesh->TextureMatrix));
break;
case MAT_NORMAL_MAP:
ListMatNormalMap::getInstance()->push_back(STK::make_tuple(mesh, ModelMatrix, InvModelMatrix, mesh->TextureMatrix));
break;
case MAT_DETAIL:
ListMatDetails::getInstance()->push_back(STK::make_tuple(mesh, ModelMatrix, InvModelMatrix, mesh->TextureMatrix));
break;
case MAT_UNLIT:
ListMatUnlit::getInstance()->push_back(STK::make_tuple(mesh, ModelMatrix, InvModelMatrix, mesh->TextureMatrix));
break;
case MAT_SPHEREMAP:
ListMatSphereMap::getInstance()->push_back(STK::make_tuple(mesh, ModelMatrix, InvModelMatrix, mesh->TextureMatrix));
break;
case MAT_SPLATTING:
ListMatSplatting::getInstance()->push_back(STK::make_tuple(mesh, ModelMatrix, InvModelMatrix));
break;
}
}
}
}
for (unsigned cascade = 0; cascade < 4; ++cascade)
{
Expand Down

0 comments on commit 82f84cf

Please sign in to comment.