Assimp
v3.1.1 (June 2014)
|
The ImproveCacheLocalityProcess reorders all faces for improved vertex cache locality. More...
Inherits Assimp::BaseProcess.
Public Member Functions | |
void | Execute (aiScene *pScene) |
Executes the post processing step on the given imported data. More... | |
ImproveCacheLocalityProcess () | |
bool | IsActive (unsigned int pFlags) const |
Returns whether the processing step is present in the given flag. More... | |
void | SetupProperties (const Importer *pImp) |
Called prior to ExecuteOnScene(). More... | |
~ImproveCacheLocalityProcess () | |
![]() | |
BaseProcess () | |
Constructor to be privately used by Importer. More... | |
void | ExecuteOnScene (Importer *pImp) |
Executes the post processing step on the given imported data. More... | |
SharedPostProcessInfo * | GetSharedData () |
Get the shared data that is assigned to the step. More... | |
virtual bool | RequireVerboseFormat () const |
Check whether this step expects its input vertex data to be in verbose format. More... | |
void | SetSharedData (SharedPostProcessInfo *sh) |
Assign a new SharedPostProcessInfo to the step. More... | |
virtual | ~BaseProcess () |
Destructor, private as well. More... | |
Protected Member Functions | |
float | ProcessMesh (aiMesh *pMesh, unsigned int meshNum) |
Executes the postprocessing step on the given mesh. More... | |
Additional Inherited Members | |
![]() | |
ProgressHandler * | progress |
Currently active progress handler. More... | |
SharedPostProcessInfo * | shared |
See the doc of #SharedPostProcessInfo for more details. More... | |
The ImproveCacheLocalityProcess reorders all faces for improved vertex cache locality.
It tries to arrange all faces to fans and to render faces which share vertices directly one after the other.
ImproveCacheLocalityProcess::ImproveCacheLocalityProcess | ( | ) |
ImproveCacheLocalityProcess::~ImproveCacheLocalityProcess | ( | ) |
Executes the post processing step on the given imported data.
A process should throw an ImportErrorException* if it fails. This method must be implemented by deriving classes.
pScene | The imported data to work at. |
Implements Assimp::BaseProcess.
|
virtual |
Returns whether the processing step is present in the given flag.
pFlags | The processing flags the importer was called with. A bitwise combination of aiPostProcessSteps. |
Implements Assimp::BaseProcess.
|
protected |
Executes the postprocessing step on the given mesh.
pMesh | The mesh to process. |
meshNum | Index of the mesh to process |
PSEUDOCODE for the algorithm
A = Build-Adjacency(I) Vertex-triangle adjacency L = Get-Triangle-Counts(A) Per-vertex live triangle counts C = Zero(Vertex-Count(I)) Per-vertex caching time stamps D = Empty-Stack() Dead-end vertex stack E = False(Triangle-Count(I)) Per triangle emitted flag O = Empty-Index-Buffer() Empty output buffer f = 0 Arbitrary starting vertex s = k+1, i = 1 Time stamp and cursor while f >= 0 For all valid fanning vertices N = Empty-Set() 1-ring of next candidates for each Triangle t in Neighbors(A, f) if !Emitted(E,t) for each Vertex v in t Append(O,v) Output vertex Push(D,v) Add to dead-end stack Insert(N,v) Register as candidate L[v] = L[v]-1 Decrease live triangle count if s-C[v] > k If not in cache C[v] = s Set time stamp s = s+1 Increment time stamp E[t] = true Flag triangle as emitted Select next fanning vertex f = Get-Next-Vertex(I,i,k,N,C,s,L,D) return O
Called prior to ExecuteOnScene().
The function is a request to the process to update its configuration basing on the Importer's configuration property list.
Reimplemented from Assimp::BaseProcess.