BGE: Some as of yet unmerged work I did in the Swiss branch. These changes include:
* Cleaning up the conversion code to avoid a per-face material conversion. Materials are now stored in buckets and only converted if a new material is found. This replaces some of Campbell's earlier work on the subject. His work wasn't as thorough, but it was much safer for a release. * Shaders are only compiled for LibLoaded materials once. Before they could be compiled twice, which could really slow things down. * Refactoring the rasterizer code to use a strategy design pattern to handle different geometry rendering methods such as immediate mode, vertex arrays and vertex buffer objects. VBOs are added, but they will be disabled in a following commit since they are still slower than vertex arrays with display lists. However, VBOs are still useful for mobile, so it's good to keep them around. * Better multi-uv support. The BGE should now be able to handle more than two UV layers, which should help it better match the viewport.
This commit is contained in:
@@ -41,6 +41,7 @@
|
||||
using namespace std;
|
||||
|
||||
#include "RAS_IRasterizer.h"
|
||||
#include "RAS_IStorage.h"
|
||||
#include "RAS_MaterialBucket.h"
|
||||
#include "RAS_ICanvas.h"
|
||||
|
||||
@@ -83,7 +84,6 @@ class RAS_OpenGLRasterizer : public RAS_IRasterizer
|
||||
float m_ambr;
|
||||
float m_ambg;
|
||||
float m_ambb;
|
||||
|
||||
double m_time;
|
||||
MT_Matrix4x4 m_viewmatrix;
|
||||
MT_Matrix4x4 m_viewinvmatrix;
|
||||
@@ -115,9 +115,15 @@ protected:
|
||||
/** Stores the caching information for the last material activated. */
|
||||
RAS_IPolyMaterial::TCachingInfo m_materialCachingInfo;
|
||||
|
||||
/** Making use of a Strategy desing pattern for storage behavior.
|
||||
Examples of concrete strategies: Vertex Arrays, VBOs, Immediate Mode*/
|
||||
int m_storage_type;
|
||||
RAS_IStorage* m_storage;
|
||||
RAS_IStorage* m_failsafe_storage; //So derived mesh can use immediate mode
|
||||
|
||||
public:
|
||||
double GetTime();
|
||||
RAS_OpenGLRasterizer(RAS_ICanvas* canv);
|
||||
RAS_OpenGLRasterizer(RAS_ICanvas* canv, int storage=RAS_AUTO_STORAGE);
|
||||
virtual ~RAS_OpenGLRasterizer();
|
||||
|
||||
/*enum DrawType
|
||||
@@ -166,8 +172,6 @@ public:
|
||||
class RAS_IPolyMaterial* polymat,
|
||||
class RAS_IRenderTools* rendertools);
|
||||
|
||||
void IndexPrimitivesInternal(RAS_MeshSlot& ms, bool multi);
|
||||
|
||||
virtual void SetProjectionMatrix(MT_CmMatrix4x4 & mat);
|
||||
virtual void SetProjectionMatrix(const MT_Matrix4x4 & mat);
|
||||
virtual void SetViewMatrix(
|
||||
|
Reference in New Issue
Block a user