@ -44,8 +44,12 @@ class AbstractShaderProgramTest: public TestSuite::Tester {
void attributeVector4 ( ) ;
void attributeVectorBGRA ( ) ;
void attributeMatrix ( ) ;
void attributeMatrixDouble ( ) ;
void attributeMatrixNxN ( ) ;
# ifndef MAGNUM_TARGET_GLES2
void attributeMatrixMxN ( ) ;
# endif
void attributeMatrixNxNd ( ) ;
void attributeMatrixMxNd ( ) ;
} ;
AbstractShaderProgramTest : : AbstractShaderProgramTest ( ) {
@ -61,38 +65,44 @@ AbstractShaderProgramTest::AbstractShaderProgramTest() {
& AbstractShaderProgramTest : : attributeVector4 ,
& AbstractShaderProgramTest : : attributeVectorBGRA ,
& AbstractShaderProgramTest : : attributeMatrix ,
& AbstractShaderProgramTest : : attributeMatrixDouble } ) ;
& AbstractShaderProgramTest : : attributeMatrixNxN ,
# ifndef MAGNUM_TARGET_GLES2
& AbstractShaderProgramTest : : attributeMatrixMxN ,
# endif
& AbstractShaderProgramTest : : attributeMatrixNxNd ,
& AbstractShaderProgramTest : : attributeMatrixMxNd } ) ;
}
void AbstractShaderProgramTest : : attributeScalar ( ) {
typedef AbstractShaderProgram : : Attribute < 3 , Float > Attribute ;
CORRADE_COMPARE ( Attribute : : Location , 3 ) ;
CORRADE_COMPARE ( Attribute : : VectorCount , 1 ) ;
/* Default constructor */
Attribute a ;
CORRADE_COMPARE ( a . components ( ) , Attribute : : Components : : One ) ;
CORRADE_VERIFY ( ! a . dataOptions ( ) ) ;
CORRADE_COMPARE ( a . data Size( ) , 4 ) ;
CORRADE_COMPARE ( a . vector Size( ) , 4 ) ;
CORRADE_COMPARE ( a . dataType ( ) , Attribute : : DataType : : Float ) ;
/* Options */
Attribute b ( Attribute : : DataType : : UnsignedShort , Attribute : : DataOption : : Normalized ) ;
CORRADE_COMPARE ( b . data Size( ) , 2 ) ;
CORRADE_COMPARE ( b . vector Size( ) , 2 ) ;
CORRADE_VERIFY ( b . dataOptions ( ) < = Attribute : : DataOption : : Normalized ) ;
}
void AbstractShaderProgramTest : : attributeScalarInt ( ) {
# ifndef MAGNUM_TARGET_GLES2
typedef AbstractShaderProgram : : Attribute < 3 , Int > Attribute ;
CORRADE_COMPARE ( Attribute : : VectorCount , 1 ) ;
/* Default constructor */
Attribute a ;
CORRADE_COMPARE ( a . data Size( ) , 4 ) ;
CORRADE_COMPARE ( a . vector Size( ) , 4 ) ;
/* Options */
Attribute b ( Attribute : : DataType : : Short ) ;
CORRADE_COMPARE ( b . data Size( ) , 2 ) ;
CORRADE_COMPARE ( b . vector Size( ) , 2 ) ;
# else
CORRADE_SKIP ( " Integer attributes are not available in OpenGL ES 2. " ) ;
# endif
@ -101,14 +111,15 @@ void AbstractShaderProgramTest::attributeScalarInt() {
void AbstractShaderProgramTest : : attributeScalarUnsignedInt ( ) {
# ifndef MAGNUM_TARGET_GLES2
typedef AbstractShaderProgram : : Attribute < 3 , UnsignedInt > Attribute ;
CORRADE_COMPARE ( Attribute : : VectorCount , 1 ) ;
/* Default constructor */
Attribute a ;
CORRADE_COMPARE ( a . data Size( ) , 4 ) ;
CORRADE_COMPARE ( a . vector Size( ) , 4 ) ;
/* Options */
Attribute b ( Attribute : : DataType : : UnsignedByte ) ;
CORRADE_COMPARE ( b . data Size( ) , 1 ) ;
CORRADE_COMPARE ( b . vector Size( ) , 1 ) ;
# else
CORRADE_SKIP ( " Integer attributes are not available in OpenGL ES 2. " ) ;
# endif
@ -117,10 +128,11 @@ void AbstractShaderProgramTest::attributeScalarUnsignedInt() {
void AbstractShaderProgramTest : : attributeScalarDouble ( ) {
# ifndef MAGNUM_TARGET_GLES
typedef AbstractShaderProgram : : Attribute < 3 , Double > Attribute ;
CORRADE_COMPARE ( Attribute : : VectorCount , 1 ) ;
/* Default constructor */
Attribute a ;
CORRADE_COMPARE ( a . data Size( ) , 8 ) ;
CORRADE_COMPARE ( a . vector Size( ) , 8 ) ;
# else
CORRADE_SKIP ( " Double attributes are not available in OpenGL ES. " ) ;
# endif
@ -128,38 +140,40 @@ void AbstractShaderProgramTest::attributeScalarDouble() {
void AbstractShaderProgramTest : : attributeVector ( ) {
typedef AbstractShaderProgram : : Attribute < 3 , Vector3 > Attribute ;
CORRADE_COMPARE ( Attribute : : VectorCount , 1 ) ;
/* Default constructor */
Attribute a ;
CORRADE_COMPARE ( a . components ( ) , Attribute : : Components : : Three ) ;
CORRADE_COMPARE ( a . data Size( ) , 3 * 4 ) ;
CORRADE_COMPARE ( a . vector Size( ) , 3 * 4 ) ;
CORRADE_COMPARE ( a . dataType ( ) , Attribute : : DataType : : Float ) ;
/* Options */
# ifndef MAGNUM_TARGET_GLES
Attribute b ( Attribute : : Components : : Two , Attribute : : DataType : : Double ) ;
CORRADE_COMPARE ( b . components ( ) , Attribute : : Components : : Two ) ;
CORRADE_COMPARE ( b . data Size( ) , 2 * 8 ) ;
CORRADE_COMPARE ( b . vector Size( ) , 2 * 8 ) ;
# else
Attribute b ( Attribute : : Components : : Two , Attribute : : DataType : : Float ) ;
CORRADE_COMPARE ( b . components ( ) , Attribute : : Components : : Two ) ;
CORRADE_COMPARE ( b . data Size( ) , 2 * 4 ) ;
CORRADE_COMPARE ( b . vector Size( ) , 2 * 4 ) ;
# endif
}
void AbstractShaderProgramTest : : attributeVectorInt ( ) {
# ifndef MAGNUM_TARGET_GLES2
typedef AbstractShaderProgram : : Attribute < 3 , Vector2i > Attribute ;
CORRADE_COMPARE ( Attribute : : VectorCount , 1 ) ;
/* Default constructor */
Attribute a ;
CORRADE_COMPARE ( a . components ( ) , Attribute : : Components : : Two ) ;
CORRADE_COMPARE ( a . data Size( ) , 2 * 4 ) ;
CORRADE_COMPARE ( a . vector Size( ) , 2 * 4 ) ;
CORRADE_COMPARE ( a . dataType ( ) , Attribute : : DataType : : Int ) ;
/* Options */
Attribute b ( Attribute : : Components : : One , Attribute : : DataType : : Int ) ;
CORRADE_COMPARE ( b . data Size( ) , 4 ) ;
CORRADE_COMPARE ( b . vector Size( ) , 4 ) ;
# else
CORRADE_SKIP ( " Integer attributes are not available in OpenGL ES 2. " ) ;
# endif
@ -168,16 +182,17 @@ void AbstractShaderProgramTest::attributeVectorInt() {
void AbstractShaderProgramTest : : attributeVectorUnsignedInt ( ) {
# ifndef MAGNUM_TARGET_GLES2
typedef AbstractShaderProgram : : Attribute < 3 , Vector4ui > Attribute ;
CORRADE_COMPARE ( Attribute : : VectorCount , 1 ) ;
/* Default constructor */
Attribute a ;
CORRADE_COMPARE ( a . components ( ) , Attribute : : Components : : Four ) ;
CORRADE_COMPARE ( a . data Size( ) , 4 * 4 ) ;
CORRADE_COMPARE ( a . vector Size( ) , 4 * 4 ) ;
CORRADE_COMPARE ( a . dataType ( ) , Attribute : : DataType : : UnsignedInt ) ;
/* Options */
Attribute b ( Attribute : : Components : : Three , Attribute : : DataType : : UnsignedShort ) ;
CORRADE_COMPARE ( b . data Size( ) , 3 * 2 ) ;
CORRADE_COMPARE ( b . vector Size( ) , 3 * 2 ) ;
# else
CORRADE_SKIP ( " Integer attributes are not available in OpenGL ES 2. " ) ;
# endif
@ -186,16 +201,17 @@ void AbstractShaderProgramTest::attributeVectorUnsignedInt() {
void AbstractShaderProgramTest : : attributeVectorDouble ( ) {
# ifndef MAGNUM_TARGET_GLES
typedef AbstractShaderProgram : : Attribute < 3 , Vector2d > Attribute ;
CORRADE_COMPARE ( Attribute : : VectorCount , 1 ) ;
/* Default constructor */
Attribute a ;
CORRADE_COMPARE ( a . components ( ) , Attribute : : Components : : Two ) ;
CORRADE_COMPARE ( a . data Size( ) , 2 * 8 ) ;
CORRADE_COMPARE ( a . vector Size( ) , 2 * 8 ) ;
CORRADE_COMPARE ( a . dataType ( ) , Attribute : : DataType : : Double ) ;
/* Options */
Attribute b ( Attribute : : Components : : One ) ;
CORRADE_COMPARE ( b . data Size( ) , 8 ) ;
CORRADE_COMPARE ( b . vector Size( ) , 8 ) ;
# else
CORRADE_SKIP ( " Double attributes are not available in OpenGL ES. " ) ;
# endif
@ -203,47 +219,79 @@ void AbstractShaderProgramTest::attributeVectorDouble() {
void AbstractShaderProgramTest : : attributeVector4 ( ) {
typedef AbstractShaderProgram : : Attribute < 3 , Vector4 > Attribute ;
CORRADE_COMPARE ( Attribute : : VectorCount , 1 ) ;
/* Custom type */
# ifndef MAGNUM_TARGET_GLES
Attribute a ( Attribute : : DataType : : UnsignedInt2101010Rev ) ;
CORRADE_COMPARE ( a . data Size( ) , 4 ) ;
CORRADE_COMPARE ( a . vector Size( ) , 4 ) ;
# else
Attribute a ( Attribute : : DataType : : HalfFloat ) ;
CORRADE_COMPARE ( a . data Size( ) , 8 ) ;
CORRADE_COMPARE ( a . vector Size( ) , 8 ) ;
# endif
}
void AbstractShaderProgramTest : : attributeVectorBGRA ( ) {
# ifndef MAGNUM_TARGET_GLES
typedef AbstractShaderProgram : : Attribute < 3 , Vector4 > Attribute ;
CORRADE_COMPARE ( Attribute : : VectorCount , 1 ) ;
/* BGRA */
Attribute a ( Attribute : : Components : : BGRA ) ;
CORRADE_COMPARE ( a . data Size( ) , 4 * 4 ) ;
CORRADE_COMPARE ( a . vector Size( ) , 4 * 4 ) ;
# else
CORRADE_SKIP ( " BGRA attribute component ordering is not available in OpenGL ES. " ) ;
# endif
}
void AbstractShaderProgramTest : : attributeMatrix ( ) {
void AbstractShaderProgramTest : : attributeMatrixNxN ( ) {
typedef AbstractShaderProgram : : Attribute < 3 , Matrix3 > Attribute ;
CORRADE_COMPARE ( Attribute : : VectorCount , 3 ) ;
/* Default constructor */
Attribute a ;
CORRADE_COMPARE ( a . components ( ) , Attribute : : Components : : Three ) ;
CORRADE_COMPARE ( a . data Size( ) , 3 * 3 * 4 ) ;
CORRADE_COMPARE ( a . vector Size( ) , 3 * 4 ) ;
CORRADE_COMPARE ( a . dataType ( ) , Attribute : : DataType : : Float ) ;
}
void AbstractShaderProgramTest : : attributeMatrixDouble ( ) {
# ifndef MAGNUM_TARGET_GLES2
void AbstractShaderProgramTest : : attributeMatrixMxN ( ) {
typedef AbstractShaderProgram : : Attribute < 3 , Matrix3x4 > Attribute ;
CORRADE_COMPARE ( Attribute : : VectorCount , 3 ) ;
/* Default constructor */
Attribute a ;
CORRADE_COMPARE ( a . components ( ) , Attribute : : Components : : Four ) ;
CORRADE_COMPARE ( a . vectorSize ( ) , 4 * 4 ) ;
CORRADE_COMPARE ( a . dataType ( ) , Attribute : : DataType : : Float ) ;
}
# endif
void AbstractShaderProgramTest : : attributeMatrixNxNd ( ) {
# ifndef MAGNUM_TARGET_GLES
typedef AbstractShaderProgram : : Attribute < 3 , Matrix4d > Attribute ;
CORRADE_COMPARE ( Attribute : : VectorCount , 4 ) ;
/* Default constructor */
Attribute a ;
CORRADE_COMPARE ( a . components ( ) , Attribute : : Components : : Four ) ;
CORRADE_COMPARE ( a . dataSize ( ) , 4 * 4 * 8 ) ;
CORRADE_COMPARE ( a . vectorSize ( ) , 4 * 8 ) ;
CORRADE_COMPARE ( a . dataType ( ) , Attribute : : DataType : : Double ) ;
# else
CORRADE_SKIP ( " Double attributes are not available in OpenGL ES. " ) ;
# endif
}
void AbstractShaderProgramTest : : attributeMatrixMxNd ( ) {
# ifndef MAGNUM_TARGET_GLES
typedef AbstractShaderProgram : : Attribute < 3 , Matrix4x2d > Attribute ;
CORRADE_COMPARE ( Attribute : : VectorCount , 4 ) ;
/* Default constructor */
Attribute a ;
CORRADE_COMPARE ( a . components ( ) , Attribute : : Components : : Two ) ;
CORRADE_COMPARE ( a . vectorSize ( ) , 2 * 8 ) ;
CORRADE_COMPARE ( a . dataType ( ) , Attribute : : DataType : : Double ) ;
# else
CORRADE_SKIP ( " Double attributes are not available in OpenGL ES. " ) ;