Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
da6363e3
Commit
da6363e3
authored
Aug 17, 2011
by
Michael Mc Donnell
Committed by
Alexandre Julliard
Oct 26, 2011
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
d3dx9/tests: Implemented CloneMesh test.
parent
3b693143
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
1678 additions
and
4 deletions
+1678
-4
mesh.c
dlls/d3dx9_36/tests/mesh.c
+1678
-4
No files found.
dlls/d3dx9_36/tests/mesh.c
View file @
da6363e3
...
...
@@ -22,6 +22,7 @@
#define COBJMACROS
#include <stdio.h>
#include <float.h>
#include <limits.h>
#include "wine/test.h"
#include "d3dx9.h"
...
...
@@ -6151,6 +6152,7 @@ static void check_vertex_components(int line, int mesh_number, int vertex_number
"sample"
};
D3DVERTEXELEMENT9
*
decl_ptr
;
const
float
PRECISION
=
1e-5
f
;
for
(
decl_ptr
=
declaration
;
decl_ptr
->
Stream
!=
0xFF
;
decl_ptr
++
)
{
...
...
@@ -6161,7 +6163,7 @@ static void check_vertex_components(int line, int mesh_number, int vertex_number
FLOAT
*
got
=
(
FLOAT
*
)(
got_ptr
+
decl_ptr
->
Offset
);
FLOAT
*
exp
=
(
FLOAT
*
)(
exp_ptr
+
decl_ptr
->
Offset
);
FLOAT
diff
=
fabsf
(
*
got
-
*
exp
);
ok_
(
__FILE__
,
line
)(
diff
<=
FLT_EPSIL
ON
,
"Mesh %d: Got %f for vertex %d %s, expected %f.
\n
"
,
ok_
(
__FILE__
,
line
)(
diff
<=
PRECISI
ON
,
"Mesh %d: Got %f for vertex %d %s, expected %f.
\n
"
,
mesh_number
,
*
got
,
vertex_number
,
usage_strings
[
decl_ptr
->
Usage
],
*
exp
);
break
;
}
...
...
@@ -6170,7 +6172,7 @@ static void check_vertex_components(int line, int mesh_number, int vertex_number
D3DXVECTOR2
*
got
=
(
D3DXVECTOR2
*
)(
got_ptr
+
decl_ptr
->
Offset
);
D3DXVECTOR2
*
exp
=
(
D3DXVECTOR2
*
)(
exp_ptr
+
decl_ptr
->
Offset
);
FLOAT
diff
=
max
(
fabsf
(
got
->
x
-
exp
->
x
),
fabsf
(
got
->
y
-
exp
->
y
));
ok_
(
__FILE__
,
line
)(
diff
<=
FLT_EPSIL
ON
,
"Mesh %d: Got (%f, %f) for vertex %d %s, expected (%f, %f).
\n
"
,
ok_
(
__FILE__
,
line
)(
diff
<=
PRECISI
ON
,
"Mesh %d: Got (%f, %f) for vertex %d %s, expected (%f, %f).
\n
"
,
mesh_number
,
got
->
x
,
got
->
y
,
vertex_number
,
usage_strings
[
decl_ptr
->
Usage
],
exp
->
x
,
exp
->
y
);
break
;
}
...
...
@@ -6180,7 +6182,7 @@ static void check_vertex_components(int line, int mesh_number, int vertex_number
D3DXVECTOR3
*
exp
=
(
D3DXVECTOR3
*
)(
exp_ptr
+
decl_ptr
->
Offset
);
FLOAT
diff
=
max
(
fabsf
(
got
->
x
-
exp
->
x
),
fabsf
(
got
->
y
-
exp
->
y
));
diff
=
max
(
diff
,
fabsf
(
got
->
z
-
exp
->
z
));
ok_
(
__FILE__
,
line
)(
diff
<=
FLT_EPSIL
ON
,
"Mesh %d: Got (%f, %f, %f) for vertex %d %s, expected (%f, %f, %f).
\n
"
,
ok_
(
__FILE__
,
line
)(
diff
<=
PRECISI
ON
,
"Mesh %d: Got (%f, %f, %f) for vertex %d %s, expected (%f, %f, %f).
\n
"
,
mesh_number
,
got
->
x
,
got
->
y
,
got
->
z
,
vertex_number
,
usage_strings
[
decl_ptr
->
Usage
],
exp
->
x
,
exp
->
y
,
exp
->
z
);
break
;
}
...
...
@@ -6191,7 +6193,7 @@ static void check_vertex_components(int line, int mesh_number, int vertex_number
FLOAT
diff
=
max
(
fabsf
(
got
->
x
-
exp
->
x
),
fabsf
(
got
->
y
-
exp
->
y
));
diff
=
max
(
diff
,
fabsf
(
got
->
z
-
exp
->
z
));
diff
=
max
(
diff
,
fabsf
(
got
->
w
-
exp
->
w
));
ok_
(
__FILE__
,
line
)(
diff
<=
FLT_EPSIL
ON
,
"Mesh %d: Got (%f, %f, %f, %f) for vertex %d %s, expected (%f, %f, %f, %f).
\n
"
,
ok_
(
__FILE__
,
line
)(
diff
<=
PRECISI
ON
,
"Mesh %d: Got (%f, %f, %f, %f) for vertex %d %s, expected (%f, %f, %f, %f).
\n
"
,
mesh_number
,
got
->
x
,
got
->
y
,
got
->
z
,
got
->
w
,
vertex_number
,
usage_strings
[
decl_ptr
->
Usage
],
exp
->
x
,
exp
->
y
,
exp
->
z
,
got
->
w
);
break
;
}
...
...
@@ -8168,6 +8170,1677 @@ cleanup:
free_test_context
(
test_context
);
}
static
void
test_clone_mesh
(
void
)
{
HRESULT
hr
;
struct
test_context
*
test_context
=
NULL
;
const
DWORD
options
=
D3DXMESH_32BIT
|
D3DXMESH_SYSTEMMEM
;
D3DVERTEXELEMENT9
declaration_pn
[]
=
{
{
0
,
0
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_POSITION
,
0
},
{
0
,
12
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_NORMAL
,
0
},
D3DDECL_END
()
};
D3DVERTEXELEMENT9
declaration_pntc
[]
=
{
{
0
,
0
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_POSITION
,
0
},
{
0
,
12
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_NORMAL
,
0
},
{
0
,
24
,
D3DDECLTYPE_FLOAT2
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_TEXCOORD
,
0
},
D3DDECL_END
()
};
D3DVERTEXELEMENT9
declaration_ptcn
[]
=
{
{
0
,
0
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_POSITION
,
0
},
{
0
,
12
,
D3DDECLTYPE_FLOAT2
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_TEXCOORD
,
0
},
{
0
,
20
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_NORMAL
,
0
},
D3DDECL_END
()
};
D3DVERTEXELEMENT9
declaration_ptc
[]
=
{
{
0
,
0
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_POSITION
,
0
},
{
0
,
12
,
D3DDECLTYPE_FLOAT2
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_TEXCOORD
,
0
},
D3DDECL_END
()
};
D3DVERTEXELEMENT9
declaration_ptc_float16_2
[]
=
{
{
0
,
0
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_POSITION
,
0
},
{
0
,
12
,
D3DDECLTYPE_FLOAT16_2
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_TEXCOORD
,
0
},
D3DDECL_END
()
};
D3DVERTEXELEMENT9
declaration_ptc_float16_4
[]
=
{
{
0
,
0
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_POSITION
,
0
},
{
0
,
12
,
D3DDECLTYPE_FLOAT16_4
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_TEXCOORD
,
0
},
D3DDECL_END
()
};
D3DVERTEXELEMENT9
declaration_ptc_float1
[]
=
{
{
0
,
0
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_POSITION
,
0
},
{
0
,
12
,
D3DDECLTYPE_FLOAT1
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_TEXCOORD
,
0
},
D3DDECL_END
()
};
D3DVERTEXELEMENT9
declaration_ptc_float3
[]
=
{
{
0
,
0
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_POSITION
,
0
},
{
0
,
12
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_TEXCOORD
,
0
},
D3DDECL_END
()
};
D3DVERTEXELEMENT9
declaration_ptc_float4
[]
=
{
{
0
,
0
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_POSITION
,
0
},
{
0
,
12
,
D3DDECLTYPE_FLOAT4
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_TEXCOORD
,
0
},
D3DDECL_END
()
};
D3DVERTEXELEMENT9
declaration_ptc_d3dcolor
[]
=
{
{
0
,
0
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_POSITION
,
0
},
{
0
,
12
,
D3DDECLTYPE_D3DCOLOR
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_TEXCOORD
,
0
},
D3DDECL_END
()
};
D3DVERTEXELEMENT9
declaration_ptc_ubyte4
[]
=
{
{
0
,
0
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_POSITION
,
0
},
{
0
,
12
,
D3DDECLTYPE_UBYTE4
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_TEXCOORD
,
0
},
D3DDECL_END
()
};
D3DVERTEXELEMENT9
declaration_ptc_ubyte4n
[]
=
{
{
0
,
0
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_POSITION
,
0
},
{
0
,
12
,
D3DDECLTYPE_UBYTE4N
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_TEXCOORD
,
0
},
D3DDECL_END
()
};
D3DVERTEXELEMENT9
declaration_ptc_short2
[]
=
{
{
0
,
0
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_POSITION
,
0
},
{
0
,
12
,
D3DDECLTYPE_SHORT2
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_TEXCOORD
,
0
},
D3DDECL_END
()
};
D3DVERTEXELEMENT9
declaration_ptc_short4
[]
=
{
{
0
,
0
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_POSITION
,
0
},
{
0
,
12
,
D3DDECLTYPE_SHORT4
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_TEXCOORD
,
0
},
D3DDECL_END
()
};
D3DVERTEXELEMENT9
declaration_ptc_short2n
[]
=
{
{
0
,
0
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_POSITION
,
0
},
{
0
,
12
,
D3DDECLTYPE_SHORT2N
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_TEXCOORD
,
0
},
D3DDECL_END
()
};
D3DVERTEXELEMENT9
declaration_ptc_short4n
[]
=
{
{
0
,
0
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_POSITION
,
0
},
{
0
,
12
,
D3DDECLTYPE_SHORT4N
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_TEXCOORD
,
0
},
D3DDECL_END
()
};
D3DVERTEXELEMENT9
declaration_ptc_ushort2n
[]
=
{
{
0
,
0
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_POSITION
,
0
},
{
0
,
12
,
D3DDECLTYPE_USHORT2N
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_TEXCOORD
,
0
},
D3DDECL_END
()
};
D3DVERTEXELEMENT9
declaration_ptc_ushort4n
[]
=
{
{
0
,
0
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_POSITION
,
0
},
{
0
,
12
,
D3DDECLTYPE_USHORT4N
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_TEXCOORD
,
0
},
D3DDECL_END
()
};
D3DVERTEXELEMENT9
declaration_ptc_float16_2_partialu
[]
=
{
{
0
,
0
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_POSITION
,
0
},
{
0
,
12
,
D3DDECLTYPE_FLOAT16_2
,
D3DDECLMETHOD_PARTIALU
,
D3DDECLUSAGE_TEXCOORD
,
0
},
D3DDECL_END
()
};
D3DVERTEXELEMENT9
declaration_pntc1
[]
=
{
{
0
,
0
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_POSITION
,
0
},
{
0
,
12
,
D3DDECLTYPE_FLOAT3
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_NORMAL
,
0
},
{
0
,
24
,
D3DDECLTYPE_FLOAT2
,
D3DDECLMETHOD_DEFAULT
,
D3DDECLUSAGE_TEXCOORD
,
1
},
D3DDECL_END
()
};
const
unsigned
int
VERTS_PER_FACE
=
3
;
BYTE
*
vertices
=
NULL
;
INT
i
;
struct
vertex_pn
{
D3DXVECTOR3
position
;
D3DXVECTOR3
normal
;
};
struct
vertex_pntc
{
D3DXVECTOR3
position
;
D3DXVECTOR3
normal
;
D3DXVECTOR2
texcoords
;
};
struct
vertex_ptcn
{
D3DXVECTOR3
position
;
D3DXVECTOR2
texcoords
;
D3DXVECTOR3
normal
;
};
struct
vertex_ptc
{
D3DXVECTOR3
position
;
D3DXVECTOR2
texcoords
;
};
struct
vertex_ptc_float16_2
{
D3DXVECTOR3
position
;
WORD
texcoords
[
2
];
/* float16_2 */
};
struct
vertex_ptc_float16_4
{
D3DXVECTOR3
position
;
WORD
texcoords
[
4
];
/* float16_4 */
};
struct
vertex_ptc_float1
{
D3DXVECTOR3
position
;
FLOAT
texcoords
;
};
struct
vertex_ptc_float3
{
D3DXVECTOR3
position
;
FLOAT
texcoords
[
3
];
};
struct
vertex_ptc_float4
{
D3DXVECTOR3
position
;
FLOAT
texcoords
[
4
];
};
struct
vertex_ptc_d3dcolor
{
D3DXVECTOR3
position
;
BYTE
texcoords
[
4
];
};
struct
vertex_ptc_ubyte4
{
D3DXVECTOR3
position
;
BYTE
texcoords
[
4
];
};
struct
vertex_ptc_ubyte4n
{
D3DXVECTOR3
position
;
BYTE
texcoords
[
4
];
};
struct
vertex_ptc_short2
{
D3DXVECTOR3
position
;
SHORT
texcoords
[
2
];
};
struct
vertex_ptc_short4
{
D3DXVECTOR3
position
;
SHORT
texcoords
[
4
];
};
struct
vertex_ptc_ushort2n
{
D3DXVECTOR3
position
;
USHORT
texcoords
[
2
];
};
struct
vertex_ptc_ushort4n
{
D3DXVECTOR3
position
;
USHORT
texcoords
[
4
];
};
struct
vertex_ptc_udec3
{
D3DXVECTOR3
position
;
DWORD
texcoords
;
};
struct
vertex_ptc_dec3n
{
D3DXVECTOR3
position
;
DWORD
texcoords
;
};
D3DXVECTOR3
up
=
{
0
.
0
f
,
0
.
0
f
,
1
.
0
f
};
D3DXVECTOR2
zero_vec2
=
{
0
.
0
f
,
0
.
0
f
};
/* Test 0. Check that a mesh can be cloned if the new declaration is the
* same as the one used to create the mesh.
*
* 0--1 3
* | / /|
* |/ / |
* 2 5--4
*/
const
struct
vertex_pn
vertices0
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
up
},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
up
},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
up
},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
up
},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
up
},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
up
},
};
const
UINT
num_vertices0
=
ARRAY_SIZE
(
vertices0
);
const
UINT
num_faces0
=
ARRAY_SIZE
(
vertices0
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size0
=
sizeof
(
*
vertices0
);
/* Test 1. Check that 16-bit indices are handled. */
const
DWORD
options_16bit
=
D3DXMESH_SYSTEMMEM
;
/* Test 2. Check that the size of each vertex is increased and the data
* moved if the new declaration adds an element after the original elements.
*/
const
struct
vertex_pntc
exp_vertices2
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
up
,
zero_vec2
},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
up
,
zero_vec2
},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
up
,
zero_vec2
},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
up
,
zero_vec2
},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
up
,
zero_vec2
},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
up
,
zero_vec2
},
};
const
UINT
exp_vertex_size2
=
sizeof
(
*
exp_vertices2
);
/* Test 3. Check that the size of each vertex is increased and the data
* moved if the new declaration adds an element between the original
* elements.
*/
const
struct
vertex_ptcn
exp_vertices3
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
zero_vec2
,
up
},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
zero_vec2
,
up
},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
zero_vec2
,
up
},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
zero_vec2
,
up
},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
zero_vec2
,
up
},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
zero_vec2
,
up
},
};
const
UINT
exp_vertex_size3
=
sizeof
(
*
exp_vertices3
);
/* Test 4. Test that data types can be converted, e.g. FLOAT2 to FLOAT16_2. */
const
struct
vertex_ptc
vertices4
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
5
f
,
0
.
7
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
0
.
2
f
,
-
0
.
3
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
2
f
,
0
.
3
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
1
f
,
0
.
2
f
}},
};
const
UINT
num_vertices4
=
ARRAY_SIZE
(
vertices4
);
const
UINT
num_faces4
=
ARRAY_SIZE
(
vertices4
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size4
=
sizeof
(
*
vertices4
);
const
struct
vertex_ptc_float16_2
exp_vertices4
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0x3c00
,
0x3c00
}},
/* {1.0f, 1.0f} */
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0x3800
,
0x399a
}},
/* {0.5f, 0.7f} */
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0xb266
,
0xb4cd
}},
/* {-0.2f, -0.3f} */
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0x3266
,
0x34cd
}},
/* {0.2f, 0.3f} */
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0x3c00
,
0x3c00
}},
/* {1.0f, 1.0f} */
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0x2e66
,
0x3266
}},
/* {0.1f, 0.2f} */
};
const
UINT
exp_vertex_size4
=
sizeof
(
*
exp_vertices4
);
/* Test 5. Convert FLOAT2 to FLOAT16_4. */
const
struct
vertex_ptc
vertices5
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
5
f
,
0
.
7
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
0
.
2
f
,
-
0
.
3
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
2
f
,
0
.
3
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
1
f
,
0
.
2
f
}},
};
const
UINT
num_vertices5
=
ARRAY_SIZE
(
vertices5
);
const
UINT
num_faces5
=
ARRAY_SIZE
(
vertices5
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size5
=
sizeof
(
*
vertices5
);
const
struct
vertex_ptc_float16_4
exp_vertices5
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0x3c00
,
0x3c00
,
0
,
0x3c00
}},
/* {1.0f, 1.0f, 0.0f, 1.0f} */
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0x3800
,
0x399a
,
0
,
0x3c00
}},
/* {0.5f, 0.7f, 0.0f, 1.0f} */
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0xb266
,
0xb4cd
,
0
,
0x3c00
}},
/* {-0.2f, -0.3f, 0.0f, 1.0f} */
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0x3266
,
0x34cd
,
0
,
0x3c00
}},
/* {0.2f, 0.3f, 0.0f, 1.0f} */
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0x3c00
,
0x3c00
,
0
,
0x3c00
}},
/* {1.0f, 1.0f, 0.0f, 1.0f} */
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0x2e66
,
0x3266
,
0
,
0x3c00
}},
/* {0.1f, 0.2f, 0.0f, 1.0f} */
};
const
UINT
exp_vertex_size5
=
sizeof
(
*
exp_vertices5
);
/* Test 6. Convert FLOAT2 to FLOAT1. */
const
struct
vertex_ptc
vertices6
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
5
f
,
0
.
7
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
0
.
2
f
,
-
0
.
3
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
2
f
,
0
.
3
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
1
f
,
0
.
2
f
}},
};
const
UINT
num_vertices6
=
ARRAY_SIZE
(
vertices6
);
const
UINT
num_faces6
=
ARRAY_SIZE
(
vertices6
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size6
=
sizeof
(
*
vertices6
);
const
struct
vertex_ptc_float1
exp_vertices6
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
1
.
0
f
},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
0
.
5
f
},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
-
0
.
2
f
},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
0
.
2
f
},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
1
.
0
f
},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
0
.
1
f
},
};
const
UINT
exp_vertex_size6
=
sizeof
(
*
exp_vertices6
);
/* Test 7. Convert FLOAT2 to FLOAT3. */
const
struct
vertex_ptc
vertices7
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
5
f
,
0
.
7
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
0
.
2
f
,
-
0
.
3
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
2
f
,
0
.
3
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
1
f
,
0
.
2
f
}},
};
const
UINT
num_vertices7
=
ARRAY_SIZE
(
vertices7
);
const
UINT
num_faces7
=
ARRAY_SIZE
(
vertices7
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size7
=
sizeof
(
*
vertices7
);
const
struct
vertex_ptc_float3
exp_vertices7
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
,
0
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
5
f
,
0
.
7
f
,
0
.
0
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
0
.
2
f
,
-
0
.
3
f
,
0
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
2
f
,
0
.
3
f
,
0
.
0
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
,
0
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
1
f
,
0
.
2
f
,
0
.
0
f
}},
};
const
UINT
exp_vertex_size7
=
sizeof
(
*
exp_vertices7
);
/* Test 8. Convert FLOAT2 to FLOAT4. */
const
struct
vertex_ptc
vertices8
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
5
f
,
0
.
7
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
0
.
2
f
,
-
0
.
3
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
2
f
,
0
.
3
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
1
f
,
0
.
2
f
}},
};
const
UINT
num_vertices8
=
ARRAY_SIZE
(
vertices8
);
const
UINT
num_faces8
=
ARRAY_SIZE
(
vertices8
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size8
=
sizeof
(
*
vertices8
);
const
struct
vertex_ptc_float4
exp_vertices8
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
5
f
,
0
.
7
f
,
0
.
0
f
,
1
.
0
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
0
.
2
f
,
-
0
.
3
f
,
0
.
0
f
,
1
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
2
f
,
0
.
3
f
,
0
.
0
f
,
1
.
0
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
1
f
,
0
.
2
f
,
0
.
0
f
,
1
.
0
f
}},
};
const
UINT
exp_vertex_size8
=
sizeof
(
*
exp_vertices8
);
/* Test 9. Convert FLOAT2 to D3DCOLOR. */
const
struct
vertex_ptc
vertices9
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
5
f
,
0
.
7
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
0
.
4
f
,
-
0
.
6
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
2
f
,
0
.
3
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
2
.
0
f
,
256
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
11
f
,
0
.
2
f
}},
};
const
UINT
num_vertices9
=
ARRAY_SIZE
(
vertices9
);
const
UINT
num_faces9
=
ARRAY_SIZE
(
vertices9
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size9
=
sizeof
(
*
vertices9
);
const
struct
vertex_ptc_d3dcolor
exp_vertices9
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
255
,
255
,
255
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
179
,
128
,
255
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
,
0
,
0
,
255
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
77
,
51
,
255
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
,
255
,
255
,
255
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
,
51
,
28
,
255
}},
};
const
UINT
exp_vertex_size9
=
sizeof
(
*
exp_vertices9
);
/* Test 10. Convert FLOAT2 to UBYTE4. */
const
struct
vertex_ptc
vertices10
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
0
f
,
1
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
2
.
0
f
,
3
.
0
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
254
.
0
f
,
255
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
256
.
0
f
,
257
.
0
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
.
4
f
,
1
.
5
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
4
.
0
f
,
-
5
.
0
f
}},
};
const
UINT
num_vertices10
=
ARRAY_SIZE
(
vertices10
);
const
UINT
num_faces10
=
ARRAY_SIZE
(
vertices10
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size10
=
sizeof
(
*
vertices10
);
const
struct
vertex_ptc_ubyte4
exp_vertices10
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
1
,
0
,
1
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
2
,
3
,
0
,
1
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
254
,
255
,
0
,
1
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
1
,
0
,
1
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
,
2
,
0
,
1
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
,
0
,
0
,
1
}},
};
const
UINT
exp_vertex_size10
=
sizeof
(
*
exp_vertices10
);
/* Test 11. Convert FLOAT2 to SHORT2. */
const
struct
vertex_ptc
vertices11
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
-
1
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
4
f
,
0
.
5
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
0
.
5
f
,
-
5
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
SHRT_MAX
,
SHRT_MIN
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
SHRT_MAX
+
1
.
0
f
,
SHRT_MIN
-
1
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
SHRT_MAX
+
2
.
0
f
,
SHRT_MIN
-
2
.
0
f
}},
{{
4
.
0
f
,
3
.
0
f
,
0
.
f
},
{
2
*
SHRT_MAX
,
2
*
SHRT_MIN
}},
{{
6
.
0
f
,
0
.
0
f
,
0
.
f
},
{
3
*
SHRT_MAX
,
3
*
SHRT_MIN
}},
{{
4
.
0
f
,
0
.
0
f
,
0
.
f
},
{
4
*
SHRT_MAX
,
4
*
SHRT_MIN
}},
};
const
UINT
num_vertices11
=
ARRAY_SIZE
(
vertices11
);
const
UINT
num_faces11
=
ARRAY_SIZE
(
vertices11
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size11
=
sizeof
(
*
vertices11
);
const
struct
vertex_ptc_short2
exp_vertices11
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
,
0
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
1
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
,
-
4
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
SHRT_MAX
,
SHRT_MIN
+
1
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
SHRT_MIN
,
SHRT_MIN
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
SHRT_MIN
+
1
,
SHRT_MAX
}},
{{
4
.
0
f
,
3
.
0
f
,
0
.
f
},
{
-
2
,
1
}},
{{
6
.
0
f
,
0
.
0
f
,
0
.
f
},
{
32765
,
-
32767
}},
{{
4
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
4
,
1
}},
};
const
UINT
exp_vertex_size11
=
sizeof
(
*
exp_vertices11
);
/* Test 12. Convert FLOAT2 to SHORT4. */
const
struct
vertex_ptc
vertices12
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
-
1
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
4
f
,
0
.
5
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
0
.
5
f
,
-
5
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
SHRT_MAX
,
SHRT_MIN
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
SHRT_MAX
+
1
.
0
f
,
SHRT_MIN
-
1
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
SHRT_MAX
+
2
.
0
f
,
SHRT_MIN
-
2
.
0
f
}},
{{
4
.
0
f
,
3
.
0
f
,
0
.
f
},
{
2
*
SHRT_MAX
,
2
*
SHRT_MIN
}},
{{
6
.
0
f
,
0
.
0
f
,
0
.
f
},
{
3
*
SHRT_MAX
,
3
*
SHRT_MIN
}},
{{
4
.
0
f
,
0
.
0
f
,
0
.
f
},
{
4
*
SHRT_MAX
,
4
*
SHRT_MIN
}},
};
const
UINT
num_vertices12
=
ARRAY_SIZE
(
vertices12
);
const
UINT
num_faces12
=
ARRAY_SIZE
(
vertices12
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size12
=
sizeof
(
*
vertices12
);
const
struct
vertex_ptc_short4
exp_vertices12
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
,
0
,
0
,
1
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
1
,
0
,
1
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
,
-
4
,
0
,
1
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
SHRT_MAX
,
SHRT_MIN
+
1
,
0
,
1
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
SHRT_MIN
,
SHRT_MIN
,
0
,
1
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
SHRT_MIN
+
1
,
SHRT_MAX
,
0
,
1
}},
{{
4
.
0
f
,
3
.
0
f
,
0
.
f
},
{
-
2
,
1
,
0
,
1
}},
{{
6
.
0
f
,
0
.
0
f
,
0
.
f
},
{
32765
,
-
32767
,
0
,
1
}},
{{
4
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
4
,
1
,
0
,
1
}},
};
const
UINT
exp_vertex_size12
=
sizeof
(
*
exp_vertices12
);
/* Test 13. Convert FLOAT2 to UBYTE4N. */
const
struct
vertex_ptc
vertices13
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
2
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
5
f
,
0
.
7
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
0
.
4
f
,
-
0
.
5
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
-
0
.
6
f
,
-
1
.
0
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
UCHAR_MAX
,
UCHAR_MAX
+
1
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
2
*
UCHAR_MAX
,
-
UCHAR_MAX
}},
};
const
UINT
num_vertices13
=
ARRAY_SIZE
(
vertices13
);
const
UINT
num_faces13
=
ARRAY_SIZE
(
vertices13
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size13
=
sizeof
(
*
vertices13
);
const
struct
vertex_ptc_ubyte4n
exp_vertices13
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
255
,
255
,
0
,
255
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
128
,
179
,
0
,
255
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
,
0
,
0
,
255
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
0
,
0
,
255
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
255
,
255
,
0
,
255
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
255
,
0
,
0
,
255
}},
};
const
UINT
exp_vertex_size13
=
sizeof
(
*
exp_vertices13
);
/* Test 14. Convert FLOAT2 to SHORT2N. */
const
struct
vertex_ptc
vertices14
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
2
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
4
f
,
0
.
5
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
6
f
,
-
1
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
-
0
.
4
f
,
-
0
.
5
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
0
.
9
f
,
-
0
.
99997
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
SHRT_MAX
,
SHRT_MIN
}},
};
const
UINT
num_vertices14
=
ARRAY_SIZE
(
vertices14
);
const
UINT
num_faces14
=
ARRAY_SIZE
(
vertices14
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size14
=
sizeof
(
*
vertices14
);
const
struct
vertex_ptc_short2
exp_vertices14
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
SHRT_MAX
,
SHRT_MAX
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
13107
,
16384
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
19660
,
SHRT_MIN
+
2
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
-
13106
,
-
16383
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
29489
,
SHRT_MIN
+
3
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
SHRT_MAX
,
SHRT_MIN
+
2
}},
};
const
UINT
exp_vertex_size14
=
sizeof
(
*
exp_vertices14
);
/* Test 15. Convert FLOAT2 to SHORT4N. */
const
struct
vertex_ptc
vertices15
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
2
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
4
f
,
0
.
5
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
6
f
,
-
1
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
-
0
.
4
f
,
-
0
.
5
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
0
.
9
f
,
-
0
.
99997
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
SHRT_MAX
,
SHRT_MIN
}},
};
const
UINT
num_vertices15
=
ARRAY_SIZE
(
vertices15
);
const
UINT
num_faces15
=
ARRAY_SIZE
(
vertices15
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size15
=
sizeof
(
*
vertices15
);
const
struct
vertex_ptc_short4
exp_vertices15
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
SHRT_MAX
,
SHRT_MAX
,
0
,
SHRT_MAX
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
13107
,
16384
,
0
,
SHRT_MAX
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
19660
,
SHRT_MIN
+
2
,
0
,
SHRT_MAX
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
-
13106
,
-
16383
,
0
,
SHRT_MAX
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
29489
,
SHRT_MIN
+
3
,
0
,
SHRT_MAX
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
SHRT_MAX
,
SHRT_MIN
+
2
,
0
,
SHRT_MAX
}},
};
const
UINT
exp_vertex_size15
=
sizeof
(
*
exp_vertices15
);
/* Test 16. Convert FLOAT2 to USHORT2N. */
const
struct
vertex_ptc
vertices16
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
2
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
4
f
,
0
.
5
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
6
f
,
-
1
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
-
0
.
4
f
,
-
0
.
5
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
0
.
9
f
,
0
.
99998
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
USHRT_MAX
,
0
.
0
f
}},
};
const
UINT
num_vertices16
=
ARRAY_SIZE
(
vertices16
);
const
UINT
num_faces16
=
ARRAY_SIZE
(
vertices16
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size16
=
sizeof
(
*
vertices16
);
const
struct
vertex_ptc_ushort2n
exp_vertices16
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
USHRT_MAX
,
USHRT_MAX
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
26214
,
32768
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
39321
,
0
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
0
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
,
USHRT_MAX
-
1
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
USHRT_MAX
,
0
}},
};
const
UINT
exp_vertex_size16
=
sizeof
(
*
exp_vertices16
);
/* Test 17. Convert FLOAT2 to USHORT4N. */
const
struct
vertex_ptc
vertices17
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
2
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
4
f
,
0
.
5
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
6
f
,
-
1
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
-
0
.
4
f
,
-
0
.
5
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
0
.
9
f
,
0
.
99998
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
USHRT_MAX
,
0
.
0
f
}},
};
const
UINT
num_vertices17
=
ARRAY_SIZE
(
vertices17
);
const
UINT
num_faces17
=
ARRAY_SIZE
(
vertices17
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size17
=
sizeof
(
*
vertices17
);
const
struct
vertex_ptc_ushort4n
exp_vertices17
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
USHRT_MAX
,
USHRT_MAX
,
0
,
USHRT_MAX
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
26214
,
32768
,
0
,
USHRT_MAX
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
39321
,
0
,
0
,
USHRT_MAX
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
0
,
0
,
USHRT_MAX
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
,
USHRT_MAX
-
1
,
0
,
USHRT_MAX
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
USHRT_MAX
,
0
,
0
,
USHRT_MAX
}},
};
const
UINT
exp_vertex_size17
=
sizeof
(
*
exp_vertices17
);
/* Test 18. Test that the method field is compared by converting a FLOAT2 to
* FLOAT16_2. where the method field has been change from
* D3DDECLMETHOD_DEFAULT to D3DDECLMETHOD_PARTIALU. */
const
struct
vertex_ptc
vertices18
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
5
f
,
0
.
7
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
0
.
2
f
,
-
0
.
3
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
2
f
,
0
.
3
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
1
f
,
0
.
2
f
}},
};
const
UINT
num_vertices18
=
ARRAY_SIZE
(
vertices18
);
const
UINT
num_faces18
=
ARRAY_SIZE
(
vertices18
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size18
=
sizeof
(
*
vertices18
);
const
struct
vertex_ptc_float16_2
exp_vertices18
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0x3c00
,
0x3c00
}},
/* {1.0f, 1.0f} */
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0x3800
,
0x399a
}},
/* {0.5f, 0.7f} */
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0xb266
,
0xb4cd
}},
/* {-0.2f, -0.3f} */
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0x3266
,
0x34cd
}},
/* {0.2f, 0.3f} */
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0x3c00
,
0x3c00
}},
/* {1.0f, 1.0f} */
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0x2e66
,
0x3266
}},
/* {0.1f, 0.2f} */
};
const
UINT
exp_vertex_size18
=
sizeof
(
*
exp_vertices18
);
/* Test 19. Test that data is lost if usage index changes, e.g. TEXCOORD0
* TEXCOORD1. */
const
struct
vertex_pntc
vertices19
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
up
,
{
1
.
0
f
,
1
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
up
,
{
0
.
5
f
,
0
.
7
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
up
,
{
-
0
.
2
f
,
-
0
.
3
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
up
,
{
0
.
2
f
,
0
.
3
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
up
,
{
1
.
0
f
,
1
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
up
,
{
0
.
1
f
,
0
.
2
f
}},
};
const
UINT
num_vertices19
=
ARRAY_SIZE
(
vertices19
);
const
UINT
num_faces19
=
ARRAY_SIZE
(
vertices19
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size19
=
sizeof
(
*
vertices19
);
const
struct
vertex_pntc
exp_vertices19
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
up
,
zero_vec2
},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
up
,
zero_vec2
},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
up
,
zero_vec2
},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
up
,
zero_vec2
},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
up
,
zero_vec2
},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
up
,
zero_vec2
},
};
const
UINT
exp_vertex_size19
=
sizeof
(
*
exp_vertices19
);
/* Test 20. Another test that data is lost if usage index changes, e.g.
* TEXCOORD1 to TEXCOORD0. */
const
struct
vertex_pntc
vertices20
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
up
,
{
1
.
0
f
,
1
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
up
,
{
0
.
5
f
,
0
.
7
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
up
,
{
-
0
.
2
f
,
-
0
.
3
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
up
,
{
0
.
2
f
,
0
.
3
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
up
,
{
1
.
0
f
,
1
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
up
,
{
0
.
1
f
,
0
.
2
f
}},
};
const
UINT
num_vertices20
=
ARRAY_SIZE
(
vertices20
);
const
UINT
num_faces20
=
ARRAY_SIZE
(
vertices20
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size20
=
sizeof
(
*
vertices20
);
const
struct
vertex_pntc
exp_vertices20
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
up
,
zero_vec2
},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
up
,
zero_vec2
},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
up
,
zero_vec2
},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
up
,
zero_vec2
},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
up
,
zero_vec2
},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
up
,
zero_vec2
},
};
const
UINT
exp_vertex_size20
=
sizeof
(
*
exp_vertices20
);
/* Test 21. Convert FLOAT1 to FLOAT2. */
const
struct
vertex_ptc_float1
vertices21
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
1
.
0
f
},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
0
.
5
f
},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
-
0
.
2
f
},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
0
.
2
f
},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
1
.
0
f
},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
0
.
1
f
},
};
const
UINT
num_vertices21
=
ARRAY_SIZE
(
vertices21
);
const
UINT
num_faces21
=
ARRAY_SIZE
(
vertices21
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size21
=
sizeof
(
*
vertices21
);
const
struct
vertex_ptc
exp_vertices21
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
0
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
5
f
,
0
.
0
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
0
.
2
f
,
0
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
2
f
,
0
.
0
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
.
0
f
,
0
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
1
f
,
0
.
0
f
}},
};
const
UINT
exp_vertex_size21
=
sizeof
(
*
exp_vertices21
);
/* Test 22. Convert FLOAT1 to FLOAT3. */
const
struct
vertex_ptc_float1
vertices22
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
1
.
0
f
},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
0
.
5
f
},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
-
0
.
2
f
},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
0
.
2
f
},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
1
.
0
f
},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
0
.
1
f
},
};
const
UINT
num_vertices22
=
ARRAY_SIZE
(
vertices22
);
const
UINT
num_faces22
=
ARRAY_SIZE
(
vertices22
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size22
=
sizeof
(
*
vertices22
);
const
struct
vertex_ptc_float3
exp_vertices22
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
0
.
0
f
,
0
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
5
f
,
0
.
0
f
,
0
.
0
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
0
.
2
f
,
0
.
0
f
,
0
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
2
f
,
0
.
0
f
,
0
.
0
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
.
0
f
,
0
.
0
f
,
0
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
1
f
,
0
.
0
f
,
0
.
0
f
}},
};
const
UINT
exp_vertex_size22
=
sizeof
(
*
exp_vertices22
);
/* Test 23. Convert FLOAT1 to FLOAT4. */
const
struct
vertex_ptc_float1
vertices23
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
1
.
0
f
},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
0
.
5
f
},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
-
0
.
2
f
},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
0
.
2
f
},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
1
.
0
f
},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
0
.
1
f
},
};
const
UINT
num_vertices23
=
ARRAY_SIZE
(
vertices23
);
const
UINT
num_faces23
=
ARRAY_SIZE
(
vertices23
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size23
=
sizeof
(
*
vertices23
);
const
struct
vertex_ptc_float4
exp_vertices23
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
0
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
5
f
,
0
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
0
.
2
f
,
0
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
2
f
,
0
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
.
0
f
,
0
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
1
f
,
0
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
};
const
UINT
exp_vertex_size23
=
sizeof
(
*
exp_vertices23
);
/* Test 24. Convert FLOAT1 to D3DCOLOR. */
const
struct
vertex_ptc_float1
vertices24
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
1
.
0
f
},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
0
.
5
f
},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
-
0
.
2
f
},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
0
.
2
f
},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
1
.
0
f
},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
0
.
11
f
},
};
const
UINT
num_vertices24
=
ARRAY_SIZE
(
vertices24
);
const
UINT
num_faces24
=
ARRAY_SIZE
(
vertices24
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size24
=
sizeof
(
*
vertices24
);
const
struct
vertex_ptc_d3dcolor
exp_vertices24
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
0
,
255
,
255
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
0
,
128
,
255
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
,
0
,
0
,
255
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
0
,
51
,
255
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
,
0
,
255
,
255
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
,
0
,
28
,
255
}},
};
const
UINT
exp_vertex_size24
=
sizeof
(
*
exp_vertices24
);
/* Test 25. Convert FLOAT1 to ubyte4. */
const
struct
vertex_ptc_float1
vertices25
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
0
.
0
f
},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
1
.
4
f
},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
1
.
5
f
},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
255
.
0
f
},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
256
.
0
f
},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
-
1
.
0
f
},
};
const
UINT
num_vertices25
=
ARRAY_SIZE
(
vertices25
);
const
UINT
num_faces25
=
ARRAY_SIZE
(
vertices25
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size25
=
sizeof
(
*
vertices25
);
const
struct
vertex_ptc_ubyte4
exp_vertices25
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
0
,
0
,
1
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
,
0
,
0
,
1
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
2
,
0
,
0
,
1
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
255
,
0
,
0
,
1
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
,
0
,
0
,
1
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
,
0
,
0
,
1
}},
};
const
UINT
exp_vertex_size25
=
sizeof
(
*
exp_vertices25
);
/* Test 26. Convert FLOAT4 to D3DCOLOR. */
const
struct
vertex_ptc_float4
vertices26
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
0
f
,
1
.
0
f
,
0
.
4
f
,
0
.
5
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
-
0
.
4
f
,
-
0
.
5
f
,
-
1
.
0
f
,
-
2
.
0
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
254
.
0
f
,
255
.
0
f
,
256
.
0
f
,
257
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
1
f
,
0
.
2
f
,
0
.
3
f
,
0
.
4
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
5
f
,
0
.
6
f
,
0
.
7
f
,
0
.
8
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
9
f
,
0
.
99
f
,
0
.
995
f
,
0
.
999
f
}},
};
const
UINT
num_vertices26
=
ARRAY_SIZE
(
vertices26
);
const
UINT
num_faces26
=
ARRAY_SIZE
(
vertices26
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size26
=
sizeof
(
*
vertices26
);
const
struct
vertex_ptc_d3dcolor
exp_vertices26
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
102
,
255
,
0
,
128
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
0
,
0
,
0
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
255
,
255
,
255
,
255
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
77
,
51
,
26
,
102
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
179
,
153
,
128
,
204
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
254
,
252
,
230
,
255
}},
};
const
UINT
exp_vertex_size26
=
sizeof
(
*
exp_vertices26
);
/* Test 27. Convert D3DCOLOR to FLOAT4. */
const
struct
vertex_ptc_d3dcolor
vertices27
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
102
,
255
,
0
,
128
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
0
,
0
,
0
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
255
,
255
,
255
,
255
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
77
,
51
,
26
,
102
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
179
,
153
,
128
,
204
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
254
,
252
,
230
,
255
}},
};
const
UINT
num_vertices27
=
ARRAY_SIZE
(
vertices27
);
const
UINT
num_faces27
=
ARRAY_SIZE
(
vertices27
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size27
=
sizeof
(
*
vertices27
);
const
struct
vertex_ptc_float4
exp_vertices27
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
0
f
,
1
.
0
f
,
0
.
4
f
,
0
.
501961
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
0
f
,
0
.
0
f
,
0
.
0
f
,
0
.
0
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
,
1
.
0
f
,
1
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
101961
f
,
0
.
2
f
,
0
.
301961
f
,
0
.
4
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
501961
f
,
0
.
6
f
,
0
.
701961
f
,
0
.
8
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
901961
f
,
0
.
988235
f
,
0
.
996078
f
,
1
.
0
f
}},
};
const
UINT
exp_vertex_size27
=
sizeof
(
*
exp_vertices27
);
/* Test 28. Convert UBYTE4 to FLOAT4. */
const
struct
vertex_ptc_ubyte4
vertices28
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
0
,
0
,
0
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
,
1
,
1
,
1
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
,
0
,
1
,
0
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
1
,
0
,
1
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
10
,
20
,
30
,
40
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
50
,
60
,
127
,
255
}},
};
const
UINT
num_vertices28
=
ARRAY_SIZE
(
vertices28
);
const
UINT
num_faces28
=
ARRAY_SIZE
(
vertices28
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size28
=
sizeof
(
*
vertices28
);
const
struct
vertex_ptc_float4
exp_vertices28
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
0
f
,
0
.
0
f
,
0
.
0
f
,
0
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
,
1
.
0
f
,
1
.
0
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
.
0
f
,
0
.
0
f
,
1
.
0
f
,
0
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
0
f
,
1
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
10
.
0
f
,
20
.
0
f
,
30
.
0
f
,
40
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
50
.
0
f
,
60
.
0
f
,
127
.
0
f
,
255
.
0
f
}},
};
const
UINT
exp_vertex_size28
=
sizeof
(
*
exp_vertices28
);
/* Test 29. Convert SHORT2 to FLOAT4. */
const
struct
vertex_ptc_short2
vertices29
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
0
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
1
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
,
0
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
,
1
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
SHRT_MIN
,
SHRT_MAX
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
42
,
42
}},
};
const
UINT
num_vertices29
=
ARRAY_SIZE
(
vertices29
);
const
UINT
num_faces29
=
ARRAY_SIZE
(
vertices29
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size29
=
sizeof
(
*
vertices29
);
const
struct
vertex_ptc_float4
exp_vertices29
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
0
f
,
0
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
0
f
,
1
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
.
0
f
,
0
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
SHRT_MIN
,
SHRT_MAX
,
0
.
0
f
,
1
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
42
.
0
f
,
42
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
};
const
UINT
exp_vertex_size29
=
sizeof
(
*
exp_vertices29
);
/* Test 29. Convert SHORT4 to FLOAT4. */
const
struct
vertex_ptc_short4
vertices30
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
0
,
0
,
0
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
1
,
0
,
1
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
,
0
,
1
,
0
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
,
1
,
1
,
1
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
SHRT_MIN
,
SHRT_MAX
,
1
,
0
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
42
,
42
,
SHRT_MAX
,
SHRT_MIN
}},
};
const
UINT
num_vertices30
=
ARRAY_SIZE
(
vertices30
);
const
UINT
num_faces30
=
ARRAY_SIZE
(
vertices30
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size30
=
sizeof
(
*
vertices30
);
const
struct
vertex_ptc_float4
exp_vertices30
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
0
f
,
0
.
0
f
,
0
.
0
f
,
0
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
0
f
,
1
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
.
0
f
,
0
.
0
f
,
1
.
0
f
,
0
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
,
1
.
0
f
,
1
.
0
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
SHRT_MIN
,
SHRT_MAX
,
1
.
0
f
,
0
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
42
.
0
f
,
42
.
0
f
,
SHRT_MAX
,
SHRT_MIN
}},
};
const
UINT
exp_vertex_size30
=
sizeof
(
*
exp_vertices30
);
/* Test 31. Convert UBYTE4N to FLOAT4. */
const
struct
vertex_ptc_ubyte4n
vertices31
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
0
,
0
,
0
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
,
1
,
1
,
1
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
,
0
,
1
,
0
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
1
,
0
,
1
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
10
,
20
,
30
,
40
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
50
,
60
,
70
,
UCHAR_MAX
}},
};
const
UINT
num_vertices31
=
ARRAY_SIZE
(
vertices31
);
const
UINT
num_faces31
=
ARRAY_SIZE
(
vertices31
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size31
=
sizeof
(
*
vertices31
);
const
struct
vertex_ptc_float4
exp_vertices31
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
0
f
,
0
.
0
f
,
0
.
0
f
,
0
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{(
FLOAT
)
1
/
UCHAR_MAX
,
(
FLOAT
)
1
/
UCHAR_MAX
,
(
FLOAT
)
1
/
UCHAR_MAX
,
(
FLOAT
)
1
/
UCHAR_MAX
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{(
FLOAT
)
1
/
UCHAR_MAX
,
0
.
0
f
,
(
FLOAT
)
1
/
UCHAR_MAX
,
0
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
0
f
,
(
FLOAT
)
1
/
UCHAR_MAX
,
0
.
0
f
,
(
FLOAT
)
1
/
UCHAR_MAX
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{(
FLOAT
)
10
/
UCHAR_MAX
,
(
FLOAT
)
20
/
UCHAR_MAX
,
(
FLOAT
)
30
/
UCHAR_MAX
,
(
FLOAT
)
40
/
UCHAR_MAX
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{(
FLOAT
)
50
/
UCHAR_MAX
,
(
FLOAT
)
60
/
UCHAR_MAX
,
(
FLOAT
)
70
/
UCHAR_MAX
,
1
.
0
f
}},
};
const
UINT
exp_vertex_size31
=
sizeof
(
*
exp_vertices31
);
/* Test 32. Convert SHORT2N to FLOAT4. */
const
struct
vertex_ptc_short2
vertices32
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
0
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
1
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
,
0
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
,
1
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
SHRT_MIN
+
1
,
SHRT_MAX
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
42
,
42
}},
};
const
UINT
num_vertices32
=
ARRAY_SIZE
(
vertices32
);
const
UINT
num_faces32
=
ARRAY_SIZE
(
vertices32
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size32
=
sizeof
(
*
vertices32
);
const
struct
vertex_ptc_float4
exp_vertices32
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
0
f
,
0
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
0
f
,
1
.
0
f
/
SHRT_MAX
,
0
.
0
f
,
1
.
0
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
.
0
f
/
SHRT_MAX
,
0
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
/
SHRT_MAX
,
1
.
0
f
/
SHRT_MAX
,
0
.
0
f
,
1
.
0
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
1
.
0
f
,
1
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
42
.
0
f
/
SHRT_MAX
,
42
.
0
f
/
SHRT_MAX
,
0
.
0
f
,
1
.
0
f
}},
};
const
UINT
exp_vertex_size32
=
sizeof
(
*
exp_vertices32
);
/* Test 33. Convert SHORT4N to FLOAT4. */
const
struct
vertex_ptc_short4
vertices33
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
0
,
0
,
0
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
,
1
,
0
,
1
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
,
0
,
1
,
0
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
,
1
,
1
,
1
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
SHRT_MIN
+
1
,
SHRT_MAX
,
SHRT_MIN
+
1
,
SHRT_MAX
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
42
,
42
,
1
,
1
}},
};
const
UINT
num_vertices33
=
ARRAY_SIZE
(
vertices33
);
const
UINT
num_faces33
=
ARRAY_SIZE
(
vertices33
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size33
=
sizeof
(
*
vertices33
);
const
struct
vertex_ptc_float4
exp_vertices33
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
0
f
,
0
.
0
f
,
0
.
0
f
,
0
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
0
f
,
1
.
0
f
/
SHRT_MAX
,
0
.
0
f
,
1
.
0
f
/
SHRT_MAX
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
.
0
f
/
SHRT_MAX
,
0
.
0
f
,
1
.
0
f
/
SHRT_MAX
,
0
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
/
SHRT_MAX
,
1
.
0
f
/
SHRT_MAX
,
1
.
0
f
/
SHRT_MAX
,
1
.
0
f
/
SHRT_MAX
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
1
.
0
f
,
1
.
0
f
,
-
1
.
0
f
,
1
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
42
.
0
f
/
SHRT_MAX
,
42
.
0
f
/
SHRT_MAX
,
1
.
0
f
/
SHRT_MAX
,
1
.
0
f
/
SHRT_MAX
}},
};
const
UINT
exp_vertex_size33
=
sizeof
(
*
exp_vertices33
);
/* Test 34. Convert FLOAT16_2 to FLOAT4. */
const
struct
vertex_ptc_float16_2
vertices34
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0x3c00
,
0x3c00
}},
/* {1.0f, 1.0f} */
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0x3800
,
0x399a
}},
/* {0.5f, 0.7f} */
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0xb266
,
0xb4cd
}},
/* {-0.2f, -0.3f} */
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0x3266
,
0x34cd
}},
/* {0.2f, 0.3f} */
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0x3c00
,
0x3c00
}},
/* {1.0f, 1.0f} */
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0x2e66
,
0x3266
}},
/* {0.1f, 0.2f} */
};
const
UINT
num_vertices34
=
ARRAY_SIZE
(
vertices34
);
const
UINT
num_faces34
=
ARRAY_SIZE
(
vertices34
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size34
=
sizeof
(
*
vertices34
);
const
struct
vertex_ptc_float4
exp_vertices34
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
5
f
,
0
.
700195
f
,
0
.
0
f
,
1
.
0
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
-
0
.
199951
f
,
-
0
.
300049
f
,
0
.
0
f
,
1
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
199951
f
,
0
.
300049
f
,
0
.
0
f
,
1
.
0
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
099976
f
,
0
.
199951
f
,
0
.
0
f
,
1
.
0
f
}},
};
const
UINT
exp_vertex_size34
=
sizeof
(
*
exp_vertices34
);
/* Test 35. Convert FLOAT16_4 to FLOAT4. */
const
struct
vertex_ptc_float16_4
vertices35
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0x0000
,
0x0000
,
0x0000
,
0x0000
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0x3c00
,
0x3c00
,
0x3c00
,
0x3c00
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0x3c00
,
0x0000
,
0x3c00
,
0x0000
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0x0000
,
0x3c00
,
0x0000
,
0x3c00
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0x3800
,
0x399a
,
0xb266
,
0xb4cd
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0x2e66
,
0x3266
,
0x2e66
,
0x3266
}},
};
const
UINT
num_vertices35
=
ARRAY_SIZE
(
vertices35
);
const
UINT
num_faces35
=
ARRAY_SIZE
(
vertices35
)
/
VERTS_PER_FACE
;
const
UINT
vertex_size35
=
sizeof
(
*
vertices35
);
const
struct
vertex_ptc_float4
exp_vertices35
[]
=
{
{{
0
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
0
f
,
0
.
0
f
,
0
.
0
f
,
0
.
0
f
}},
{{
2
.
0
f
,
3
.
0
f
,
0
.
f
},
{
1
.
0
f
,
1
.
0
f
,
1
.
0
f
,
1
.
0
f
}},
{{
0
.
0
f
,
0
.
0
f
,
0
.
f
},
{
1
.
0
f
,
0
.
0
f
,
1
.
0
f
,
0
.
0
f
}},
{{
3
.
0
f
,
3
.
0
f
,
0
.
f
},
{
0
.
0
f
,
1
.
0
f
,
0
.
0
f
,
1
.
0
f
}},
{{
3
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
5
f
,
0
.
700195
f
,
-
0
.
199951
f
,
-
0
.
300049
f
}},
{{
1
.
0
f
,
0
.
0
f
,
0
.
f
},
{
0
.
099976
f
,
0
.
199951
f
,
0
.
099976
f
,
0
.
199951
f
}},
};
const
UINT
exp_vertex_size35
=
sizeof
(
*
exp_vertices35
);
/* Common mesh data */
ID3DXMesh
*
mesh
=
NULL
;
ID3DXMesh
*
mesh_clone
=
NULL
;
struct
{
const
BYTE
*
vertices
;
const
DWORD
*
indices
;
const
DWORD
*
attributes
;
const
UINT
num_vertices
;
const
UINT
num_faces
;
const
UINT
vertex_size
;
const
DWORD
options
;
D3DVERTEXELEMENT9
*
declaration
;
D3DVERTEXELEMENT9
*
new_declaration
;
const
BYTE
*
exp_vertices
;
const
UINT
exp_vertex_size
;
}
tc
[]
=
{
{
(
BYTE
*
)
vertices0
,
NULL
,
NULL
,
num_vertices0
,
num_faces0
,
vertex_size0
,
options
,
declaration_pn
,
declaration_pn
,
(
BYTE
*
)
vertices0
,
vertex_size0
},
{
(
BYTE
*
)
vertices0
,
NULL
,
NULL
,
num_vertices0
,
num_faces0
,
vertex_size0
,
options_16bit
,
declaration_pn
,
declaration_pn
,
(
BYTE
*
)
vertices0
,
vertex_size0
},
{
(
BYTE
*
)
vertices0
,
NULL
,
NULL
,
num_vertices0
,
num_faces0
,
vertex_size0
,
options
,
declaration_pn
,
declaration_pntc
,
(
BYTE
*
)
exp_vertices2
,
exp_vertex_size2
},
{
(
BYTE
*
)
vertices0
,
NULL
,
NULL
,
num_vertices0
,
num_faces0
,
vertex_size0
,
options
,
declaration_pn
,
declaration_ptcn
,
(
BYTE
*
)
exp_vertices3
,
exp_vertex_size3
},
{
(
BYTE
*
)
vertices4
,
NULL
,
NULL
,
num_vertices4
,
num_faces4
,
vertex_size4
,
options
,
declaration_ptc
,
declaration_ptc_float16_2
,
(
BYTE
*
)
exp_vertices4
,
exp_vertex_size4
},
{
(
BYTE
*
)
vertices5
,
NULL
,
NULL
,
num_vertices5
,
num_faces5
,
vertex_size5
,
options
,
declaration_ptc
,
declaration_ptc_float16_4
,
(
BYTE
*
)
exp_vertices5
,
exp_vertex_size5
},
{
(
BYTE
*
)
vertices6
,
NULL
,
NULL
,
num_vertices6
,
num_faces6
,
vertex_size6
,
options
,
declaration_ptc
,
declaration_ptc_float1
,
(
BYTE
*
)
exp_vertices6
,
exp_vertex_size6
},
{
(
BYTE
*
)
vertices7
,
NULL
,
NULL
,
num_vertices7
,
num_faces7
,
vertex_size7
,
options
,
declaration_ptc
,
declaration_ptc_float3
,
(
BYTE
*
)
exp_vertices7
,
exp_vertex_size7
},
{
(
BYTE
*
)
vertices8
,
NULL
,
NULL
,
num_vertices8
,
num_faces8
,
vertex_size8
,
options
,
declaration_ptc
,
declaration_ptc_float4
,
(
BYTE
*
)
exp_vertices8
,
exp_vertex_size8
},
{
(
BYTE
*
)
vertices9
,
NULL
,
NULL
,
num_vertices9
,
num_faces9
,
vertex_size9
,
options
,
declaration_ptc
,
declaration_ptc_d3dcolor
,
(
BYTE
*
)
exp_vertices9
,
exp_vertex_size9
},
{
(
BYTE
*
)
vertices10
,
NULL
,
NULL
,
num_vertices10
,
num_faces10
,
vertex_size10
,
options
,
declaration_ptc
,
declaration_ptc_ubyte4
,
(
BYTE
*
)
exp_vertices10
,
exp_vertex_size10
},
{
(
BYTE
*
)
vertices11
,
NULL
,
NULL
,
num_vertices11
,
num_faces11
,
vertex_size11
,
options
,
declaration_ptc
,
declaration_ptc_short2
,
(
BYTE
*
)
exp_vertices11
,
exp_vertex_size11
},
{
(
BYTE
*
)
vertices12
,
NULL
,
NULL
,
num_vertices12
,
num_faces12
,
vertex_size12
,
options
,
declaration_ptc
,
declaration_ptc_short4
,
(
BYTE
*
)
exp_vertices12
,
exp_vertex_size12
},
{
(
BYTE
*
)
vertices13
,
NULL
,
NULL
,
num_vertices13
,
num_faces13
,
vertex_size13
,
options
,
declaration_ptc
,
declaration_ptc_ubyte4n
,
(
BYTE
*
)
exp_vertices13
,
exp_vertex_size13
},
{
(
BYTE
*
)
vertices14
,
NULL
,
NULL
,
num_vertices14
,
num_faces14
,
vertex_size14
,
options
,
declaration_ptc
,
declaration_ptc_short2n
,
(
BYTE
*
)
exp_vertices14
,
exp_vertex_size14
},
{
(
BYTE
*
)
vertices15
,
NULL
,
NULL
,
num_vertices15
,
num_faces15
,
vertex_size15
,
options
,
declaration_ptc
,
declaration_ptc_short4n
,
(
BYTE
*
)
exp_vertices15
,
exp_vertex_size15
},
{
(
BYTE
*
)
vertices16
,
NULL
,
NULL
,
num_vertices16
,
num_faces16
,
vertex_size16
,
options
,
declaration_ptc
,
declaration_ptc_ushort2n
,
(
BYTE
*
)
exp_vertices16
,
exp_vertex_size16
},
{
(
BYTE
*
)
vertices17
,
NULL
,
NULL
,
num_vertices17
,
num_faces17
,
vertex_size17
,
options
,
declaration_ptc
,
declaration_ptc_ushort4n
,
(
BYTE
*
)
exp_vertices17
,
exp_vertex_size17
},
{
(
BYTE
*
)
vertices18
,
NULL
,
NULL
,
num_vertices18
,
num_faces18
,
vertex_size18
,
options
,
declaration_ptc
,
declaration_ptc_float16_2_partialu
,
(
BYTE
*
)
exp_vertices18
,
exp_vertex_size18
},
{
(
BYTE
*
)
vertices19
,
NULL
,
NULL
,
num_vertices19
,
num_faces19
,
vertex_size19
,
options
,
declaration_pntc
,
declaration_pntc1
,
(
BYTE
*
)
exp_vertices19
,
exp_vertex_size19
},
{
(
BYTE
*
)
vertices20
,
NULL
,
NULL
,
num_vertices20
,
num_faces20
,
vertex_size20
,
options
,
declaration_pntc1
,
declaration_pntc
,
(
BYTE
*
)
exp_vertices20
,
exp_vertex_size20
},
{
(
BYTE
*
)
vertices21
,
NULL
,
NULL
,
num_vertices21
,
num_faces21
,
vertex_size21
,
options
,
declaration_ptc_float1
,
declaration_ptc
,
(
BYTE
*
)
exp_vertices21
,
exp_vertex_size21
},
{
(
BYTE
*
)
vertices22
,
NULL
,
NULL
,
num_vertices22
,
num_faces22
,
vertex_size22
,
options
,
declaration_ptc_float1
,
declaration_ptc_float3
,
(
BYTE
*
)
exp_vertices22
,
exp_vertex_size22
},
{
(
BYTE
*
)
vertices23
,
NULL
,
NULL
,
num_vertices23
,
num_faces23
,
vertex_size23
,
options
,
declaration_ptc_float1
,
declaration_ptc_float4
,
(
BYTE
*
)
exp_vertices23
,
exp_vertex_size23
},
{
(
BYTE
*
)
vertices24
,
NULL
,
NULL
,
num_vertices24
,
num_faces24
,
vertex_size24
,
options
,
declaration_ptc_float1
,
declaration_ptc_d3dcolor
,
(
BYTE
*
)
exp_vertices24
,
exp_vertex_size24
},
{
(
BYTE
*
)
vertices25
,
NULL
,
NULL
,
num_vertices25
,
num_faces25
,
vertex_size25
,
options
,
declaration_ptc_float1
,
declaration_ptc_ubyte4
,
(
BYTE
*
)
exp_vertices25
,
exp_vertex_size25
},
{
(
BYTE
*
)
vertices26
,
NULL
,
NULL
,
num_vertices26
,
num_faces26
,
vertex_size26
,
options
,
declaration_ptc_float4
,
declaration_ptc_d3dcolor
,
(
BYTE
*
)
exp_vertices26
,
exp_vertex_size26
},
{
(
BYTE
*
)
vertices27
,
NULL
,
NULL
,
num_vertices27
,
num_faces27
,
vertex_size27
,
options
,
declaration_ptc_d3dcolor
,
declaration_ptc_float4
,
(
BYTE
*
)
exp_vertices27
,
exp_vertex_size27
},
{
(
BYTE
*
)
vertices28
,
NULL
,
NULL
,
num_vertices28
,
num_faces28
,
vertex_size28
,
options
,
declaration_ptc_ubyte4
,
declaration_ptc_float4
,
(
BYTE
*
)
exp_vertices28
,
exp_vertex_size28
},
{
(
BYTE
*
)
vertices29
,
NULL
,
NULL
,
num_vertices29
,
num_faces29
,
vertex_size29
,
options
,
declaration_ptc_short2
,
declaration_ptc_float4
,
(
BYTE
*
)
exp_vertices29
,
exp_vertex_size29
},
{
(
BYTE
*
)
vertices30
,
NULL
,
NULL
,
num_vertices30
,
num_faces30
,
vertex_size30
,
options
,
declaration_ptc_short4
,
declaration_ptc_float4
,
(
BYTE
*
)
exp_vertices30
,
exp_vertex_size30
},
{
(
BYTE
*
)
vertices31
,
NULL
,
NULL
,
num_vertices31
,
num_faces31
,
vertex_size31
,
options
,
declaration_ptc_ubyte4n
,
declaration_ptc_float4
,
(
BYTE
*
)
exp_vertices31
,
exp_vertex_size31
},
{
(
BYTE
*
)
vertices32
,
NULL
,
NULL
,
num_vertices32
,
num_faces32
,
vertex_size32
,
options
,
declaration_ptc_short2n
,
declaration_ptc_float4
,
(
BYTE
*
)
exp_vertices32
,
exp_vertex_size32
},
{
(
BYTE
*
)
vertices33
,
NULL
,
NULL
,
num_vertices33
,
num_faces33
,
vertex_size33
,
options
,
declaration_ptc_short4n
,
declaration_ptc_float4
,
(
BYTE
*
)
exp_vertices33
,
exp_vertex_size33
},
{
(
BYTE
*
)
vertices34
,
NULL
,
NULL
,
num_vertices34
,
num_faces34
,
vertex_size34
,
options
,
declaration_ptc_float16_2
,
declaration_ptc_float4
,
(
BYTE
*
)
exp_vertices34
,
exp_vertex_size34
},
{
(
BYTE
*
)
vertices35
,
NULL
,
NULL
,
num_vertices35
,
num_faces35
,
vertex_size35
,
options
,
declaration_ptc_float16_4
,
declaration_ptc_float4
,
(
BYTE
*
)
exp_vertices35
,
exp_vertex_size35
},
};
test_context
=
new_test_context
();
if
(
!
test_context
)
{
skip
(
"Couldn't create test context
\n
"
);
goto
cleanup
;
}
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
tc
);
i
++
)
{
UINT
j
;
D3DVERTEXELEMENT9
new_declaration
[
MAX_FVF_DECL_SIZE
];
UINT
exp_new_decl_length
,
new_decl_length
;
UINT
exp_new_decl_size
,
new_decl_size
;
hr
=
init_test_mesh
(
tc
[
i
].
num_faces
,
tc
[
i
].
num_vertices
,
tc
[
i
].
options
,
tc
[
i
].
declaration
,
test_context
->
device
,
&
mesh
,
tc
[
i
].
vertices
,
tc
[
i
].
vertex_size
,
tc
[
i
].
indices
,
tc
[
i
].
attributes
);
if
(
FAILED
(
hr
))
{
skip
(
"Couldn't initialize test mesh %d. Got %x expected D3D_OK
\n
"
,
i
,
hr
);
goto
cleanup
;
}
hr
=
mesh
->
lpVtbl
->
CloneMesh
(
mesh
,
tc
[
i
].
options
,
tc
[
i
].
new_declaration
,
test_context
->
device
,
&
mesh_clone
);
ok
(
hr
==
D3D_OK
,
"CloneMesh test case %d failed. Got %x
\n
, expected D3D_OK
\n
"
,
i
,
hr
);
hr
=
mesh_clone
->
lpVtbl
->
GetDeclaration
(
mesh_clone
,
new_declaration
);
ok
(
hr
==
D3D_OK
,
"GetDeclaration test case %d failed. Got %x
\n
, expected D3D_OK
\n
"
,
i
,
hr
);
/* Check declaration elements */
for
(
j
=
0
;
tc
[
i
].
new_declaration
[
j
].
Stream
!=
0xFF
;
j
++
)
{
ok
(
memcmp
(
&
tc
[
i
].
new_declaration
[
j
],
&
new_declaration
[
j
],
sizeof
(
*
new_declaration
))
==
0
,
"Test case %d failed. Declaration element %d did not match."
,
i
,
j
);
}
/* Check declaration length */
exp_new_decl_length
=
D3DXGetDeclLength
(
tc
[
i
].
new_declaration
);
new_decl_length
=
D3DXGetDeclLength
(
new_declaration
);
ok
(
new_decl_length
==
exp_new_decl_length
,
"Test case %d failed. Got new declaration length %d, expected %d
\n
"
,
i
,
new_decl_length
,
exp_new_decl_length
);
/* Check declaration size */
exp_new_decl_size
=
D3DXGetDeclVertexSize
(
tc
[
i
].
new_declaration
,
0
);
new_decl_size
=
D3DXGetDeclVertexSize
(
new_declaration
,
0
);
ok
(
new_decl_size
==
exp_new_decl_size
,
"Test case %d failed. Got new declaration size %d, expected %d
\n
"
,
i
,
new_decl_size
,
exp_new_decl_size
);
/* Check vertex data in cloned mesh */
hr
=
mesh_clone
->
lpVtbl
->
LockVertexBuffer
(
mesh_clone
,
0
,
(
void
**
)
&
vertices
);
if
(
FAILED
(
hr
))
{
skip
(
"Couldn't lock cloned vertex buffer.
\n
"
);
goto
cleanup
;
}
for
(
j
=
0
;
j
<
tc
[
i
].
num_vertices
;
j
++
)
{
UINT
index
=
tc
[
i
].
exp_vertex_size
*
j
;
check_vertex_components
(
__LINE__
,
i
,
j
,
&
vertices
[
index
],
&
tc
[
i
].
exp_vertices
[
index
],
tc
[
i
].
new_declaration
);
}
hr
=
mesh_clone
->
lpVtbl
->
UnlockVertexBuffer
(
mesh_clone
);
if
(
FAILED
(
hr
))
{
skip
(
"Couldn't unlock vertex buffer.
\n
"
);
goto
cleanup
;
}
vertices
=
NULL
;
mesh
->
lpVtbl
->
Release
(
mesh
);
mesh
=
NULL
;
mesh_clone
->
lpVtbl
->
Release
(
mesh_clone
);
mesh_clone
=
NULL
;
}
cleanup:
if
(
vertices
)
mesh
->
lpVtbl
->
UnlockVertexBuffer
(
mesh
);
if
(
mesh
)
mesh
->
lpVtbl
->
Release
(
mesh
);
if
(
mesh_clone
)
mesh_clone
->
lpVtbl
->
Release
(
mesh_clone
);
free_test_context
(
test_context
);
}
START_TEST
(
mesh
)
{
D3DXBoundProbeTest
();
...
...
@@ -8191,4 +9864,5 @@ START_TEST(mesh)
test_convert_adjacency_to_point_reps
();
test_convert_point_reps_to_adjacency
();
test_weld_vertices
();
test_clone_mesh
();
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment