OGRE-Next  3.0.0
Object-Oriented Graphics Rendering Engine
Ogre::SimpleMatrixAf4x3 Class Reference

Simple wrap up to load an AoS matrix 4x3 using SSE. More...

#include <OgreArrayMatrixAf4x3.h>

Public Member Functions

 SimpleMatrixAf4x3 ()
 
 SimpleMatrixAf4x3 ()
 
 SimpleMatrixAf4x3 ()
 
 SimpleMatrixAf4x3 (ArrayReal row0, ArrayReal row1, ArrayReal row2)
 
 SimpleMatrixAf4x3 (ArrayReal row0, ArrayReal row1, ArrayReal row2)
 
 SimpleMatrixAf4x3 (Real m00, Real m01, Real m02, Real m03, Real m10, Real m11, Real m12, Real m13, Real m20, Real m21, Real m22, Real m23)
 
void load (const Matrix4 &src)
 Assumes src is aligned. More...
 
void load (const Matrix4 &src)
 Assumes src is aligned. More...
 
void load (const Matrix4 &src)
 Assumes src is aligned. More...
 
void store (Matrix4 *dst) const
 Assumes dst is aligned. More...
 
void store (Matrix4 *dst) const
 Assumes dst is aligned. More...
 
void store (Matrix4 *dst) const
 Assumes dst is aligned. More...
 
void store4x3 (float *RESTRICT_ALIAS dst) const
 Assumes dst is aligned. More...
 
void store4x3 (float *RESTRICT_ALIAS dst) const
 Assumes dst is aligned. More...
 
void store4x3 (float *RESTRICT_ALIAS dst) const
 Assumes dst is aligned. More...
 
void store4x3 (Matrix4 *dst) const
 Assumes dst is aligned. More...
 
void store4x3 (Matrix4 *dst) const
 Assumes dst is aligned. More...
 
void store4x3 (Matrix4 *dst) const
 Assumes dst is aligned. More...
 
void streamTo4x3 (float *RESTRICT_ALIAS dst) const
 Copies our 4x3 contents using memory write combining when possible. More...
 
void streamTo4x3 (float *RESTRICT_ALIAS dst) const
 Copies our 4x3 contents using memory write combining when possible. More...
 
void streamTo4x3 (float *RESTRICT_ALIAS dst) const
 Copies our 4x3 contents using memory write combining when possible. More...
 

Public Attributes

ArrayReal mChunkBase [12]
 

Static Public Attributes

static const SimpleMatrixAf4x3 IDENTITY
 

Detailed Description

Simple wrap up to load an AoS matrix 4x3 using SSE.

Simple wrap up to load an AoS matrix 4x3 using NEON.

The main reason of this class is to force MSVC to use 3 movaps to load arrays of MatrixAf4x3s (which are waaay more efficient that whatever lea+mov junk it tries to produce)

Constructor & Destructor Documentation

◆ SimpleMatrixAf4x3() [1/6]

Ogre::SimpleMatrixAf4x3::SimpleMatrixAf4x3 ( )
inline

◆ SimpleMatrixAf4x3() [2/6]

Ogre::SimpleMatrixAf4x3::SimpleMatrixAf4x3 ( Real  m00,
Real  m01,
Real  m02,
Real  m03,
Real  m10,
Real  m11,
Real  m12,
Real  m13,
Real  m20,
Real  m21,
Real  m22,
Real  m23 
)
inline

◆ SimpleMatrixAf4x3() [3/6]

Ogre::SimpleMatrixAf4x3::SimpleMatrixAf4x3 ( )
inline

◆ SimpleMatrixAf4x3() [4/6]

Ogre::SimpleMatrixAf4x3::SimpleMatrixAf4x3 ( ArrayReal  row0,
ArrayReal  row1,
ArrayReal  row2 
)
inline

◆ SimpleMatrixAf4x3() [5/6]

Ogre::SimpleMatrixAf4x3::SimpleMatrixAf4x3 ( )
inline

◆ SimpleMatrixAf4x3() [6/6]

Ogre::SimpleMatrixAf4x3::SimpleMatrixAf4x3 ( ArrayReal  row0,
ArrayReal  row1,
ArrayReal  row2 
)
inline

Member Function Documentation

◆ load() [1/3]

void Ogre::SimpleMatrixAf4x3::load ( const Matrix4 src)
inline

Assumes src is aligned.

References Ogre::Matrix4::_m.

◆ load() [2/3]

void Ogre::SimpleMatrixAf4x3::load ( const Matrix4 src)
inline

Assumes src is aligned.

References Ogre::Matrix4::_m.

◆ load() [3/3]

void Ogre::SimpleMatrixAf4x3::load ( const Matrix4 src)
inline

Assumes src is aligned.

References Ogre::Matrix4::_m.

◆ store() [1/3]

void Ogre::SimpleMatrixAf4x3::store ( Matrix4 dst) const
inline

Assumes dst is aligned.

References Ogre::Matrix4::_m.

◆ store() [2/3]

void Ogre::SimpleMatrixAf4x3::store ( Matrix4 dst) const
inline

Assumes dst is aligned.

References RESTRICT_ALIAS.

◆ store() [3/3]

void Ogre::SimpleMatrixAf4x3::store ( Matrix4 dst) const
inline

Assumes dst is aligned.

References RESTRICT_ALIAS.

◆ store4x3() [1/6]

void Ogre::SimpleMatrixAf4x3::store4x3 ( float *RESTRICT_ALIAS  dst) const
inline

Assumes dst is aligned.

◆ store4x3() [2/6]

void Ogre::SimpleMatrixAf4x3::store4x3 ( float *RESTRICT_ALIAS  dst) const
inline

Assumes dst is aligned.

◆ store4x3() [3/6]

void Ogre::SimpleMatrixAf4x3::store4x3 ( float *RESTRICT_ALIAS  dst) const
inline

Assumes dst is aligned.

◆ store4x3() [4/6]

void Ogre::SimpleMatrixAf4x3::store4x3 ( Matrix4 dst) const
inline

Assumes dst is aligned.

References Ogre::Matrix4::_m.

◆ store4x3() [5/6]

void Ogre::SimpleMatrixAf4x3::store4x3 ( Matrix4 dst) const
inline

Assumes dst is aligned.

References RESTRICT_ALIAS.

◆ store4x3() [6/6]

void Ogre::SimpleMatrixAf4x3::store4x3 ( Matrix4 dst) const
inline

Assumes dst is aligned.

References RESTRICT_ALIAS.

◆ streamTo4x3() [1/3]

void Ogre::SimpleMatrixAf4x3::streamTo4x3 ( float *RESTRICT_ALIAS  dst) const
inline

Copies our 4x3 contents using memory write combining when possible.

◆ streamTo4x3() [2/3]

void Ogre::SimpleMatrixAf4x3::streamTo4x3 ( float *RESTRICT_ALIAS  dst) const
inline

Copies our 4x3 contents using memory write combining when possible.

◆ streamTo4x3() [3/3]

void Ogre::SimpleMatrixAf4x3::streamTo4x3 ( float *RESTRICT_ALIAS  dst) const
inline

Copies our 4x3 contents using memory write combining when possible.

Member Data Documentation

◆ IDENTITY

static const SimpleMatrixAf4x3 Ogre::SimpleMatrixAf4x3::IDENTITY
static

◆ mChunkBase

ArrayReal Ogre::SimpleMatrixAf4x3::mChunkBase

The documentation for this class was generated from the following file: