63 IUnknown_AddRef(iface);
78 TRACE(
"%p increasing refcount to %u.\n", skin, refcount);
88 TRACE(
"%p decreasing refcount to %u.\n", skin, refcount);
115 TRACE(
"iface %p, bone_num %u, num_influences %u, vertices %p, weights %p.\n",
146 FIXME(
"iface %p, bone_num %u, influence_num %u, weight %.8e stub!\n",
147 iface, bone_num, influence_num,
weight);
156 TRACE(
"iface %p, bone_num %u.\n", iface, bone_num);
161 return skin->
bones[bone_num].num_influences;
170 TRACE(
"iface %p, bone_num %u, vertices %p, weights %p.\n",
190 FIXME(
"iface %p, bone_num %u, influence_num %u, weight %p, vertex_num %p stub!\n",
191 iface, bone_num, influence_num,
weight, vertex_num);
198 FIXME(
"iface %p, max_vertex_influences %p stub!\n", iface, max_vertex_influences);
207 TRACE(
"iface %p.\n", iface);
215 FIXME(
"iface %p, bone_num %u, vertex_num %u, influence_index %p stub!\n",
216 iface, bone_num, vertex_num, influence_index);
222 struct IDirect3DIndexBuffer9 *index_buffer,
DWORD num_faces,
DWORD *max_face_influences)
224 FIXME(
"iface %p, index_buffer %p, num_faces %u, max_face_influences %p stub!\n",
225 iface, index_buffer, num_faces, max_face_influences);
232 FIXME(
"iface %p, min_influence %.8e stub!\n", iface, min_influence);
239 FIXME(
"iface %p stub!\n", iface);
261 skin->
bones[bone_idx].name = new_name;
270 TRACE(
"iface %p, bone_idx %u.\n", iface, bone_idx);
275 return skin->
bones[bone_idx].name;
283 TRACE(
"iface %p, bone_num %u, bone_transform %p.\n", iface, bone_num, bone_transform);
285 if (bone_num >= skin->
num_bones || !bone_transform)
288 skin->
bones[bone_num].transform = *bone_transform;
296 TRACE(
"iface %p, bone_num %u.\n", iface, bone_num);
301 return &skin->
bones[bone_num].transform;
310 TRACE(
"iface %p, skin_info %p.\n", iface, skin_info);
319 if (current_bone->
name &&
FAILED(
hr = (*skin_info)->lpVtbl->SetBoneName(*skin_info,
i, current_bone->
name)))
321 if (
FAILED(
hr = (*skin_info)->lpVtbl->SetBoneOffsetMatrix(*skin_info,
i, ¤t_bone->
transform)))
330 (*skin_info)->lpVtbl->
Release(*skin_info);
337 FIXME(
"iface %p, num_vertices %u, vertex_remap %p stub!\n", iface, num_vertices, vertex_remap);
347 TRACE(
"iface %p, fvf %#x.\n", iface, fvf);
352 return iface->lpVtbl->SetDeclaration(iface,
declaration);
367 WARN(
"Invalid vertex element %u; contains non-zero stream %u\n",
386 TRACE(
"iface %p.\n", iface);
405 const D3DXMATRIX *bone_inv_transpose_transforms,
const void *src_vertices,
void *dst_vertices)
411 TRACE(
"iface %p, bone_transforms %p, bone_inv_transpose_transforms %p, src_vertices %p, dst_vertices %p\n",
412 skin, bone_transforms, bone_inv_transpose_transforms, src_vertices, dst_vertices);
414 if (bone_inv_transpose_transforms)
415 FIXME(
"Skinning vertices with two position elements not supported\n");
438 for (
j = 0;
j < skin->
bones[
i].num_influences;
j++) {
445 position_dest->
x +=
weight * position.
x;
446 position_dest->
y +=
weight * position.
y;
447 position_dest->
z +=
weight * position.
z;
467 for (
j = 0;
j < skin->
bones[
i].num_influences;
j++) {
484 if ((normal_dest->
x != 0.0f) && (normal_dest->
y != 0.0f) && (normal_dest->
z != 0.0f))
495 ID3DXBuffer **bone_combination_table, ID3DXMesh **mesh_out)
497 FIXME(
"iface %p, mesh_in %p, options %#x, adjacency_in %p, adjacency_out %p, face_remap %p, vertex_remap %p, "
498 "max_face_infl %p, num_bone_combinations %p, bone_combination_table %p, mesh_out %p stub!\n",
499 iface, mesh_in,
options, adjacency_in, adjacency_out, face_remap, vertex_remap,
500 max_face_infl, num_bone_combinations, bone_combination_table, mesh_out);
508 ID3DXBuffer **bone_combination_table, ID3DXMesh **mesh_out)
510 FIXME(
"iface %p, mesh_in %p, options %#x, palette_size %u, adjacency_in %p, adjacency_out %p, face_remap %p, vertex_remap %p, "
511 "max_face_infl %p, num_bone_combinations %p, bone_combination_table %p, mesh_out %p stub!\n",
512 iface, mesh_in,
options,
palette_size, adjacency_in, adjacency_out, face_remap, vertex_remap,
513 max_face_infl, num_bone_combinations, bone_combination_table, mesh_out);
550 DWORD num_bones, ID3DXSkinInfo **skin_info)
556 TRACE(
"num_vertices %u, declaration %p, num_bones %u, skin_info %p.\n",
570 object->vertex_declaration[0] = empty_declaration;
582 *skin_info = &
object->ID3DXSkinInfo_iface;
ACPI_SIZE strlen(const char *String)
#define InterlockedIncrement
#define InterlockedDecrement
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define D3DFVF_POSITION_MASK
#define D3DERR_INVALIDCALL
struct ID3DXBuffer ID3DXBuffer
struct _D3DVECTOR D3DXVECTOR3
D3DXVECTOR3 *WINAPI D3DXVec3TransformCoord(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv, const D3DXMATRIX *pm)
D3DXMATRIX *WINAPI D3DXMatrixMultiply(D3DXMATRIX *pout, const D3DXMATRIX *pm1, const D3DXMATRIX *pm2)
D3DXMATRIX *WINAPI D3DXMatrixInverse(D3DXMATRIX *pout, FLOAT *pdeterminant, const D3DXMATRIX *pm)
D3DXVECTOR3 *WINAPI D3DXVec3TransformNormal(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv, const D3DXMATRIX *pm)
D3DXVECTOR3 *WINAPI D3DXVec3Normalize(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv)
UINT WINAPI D3DXGetFVFVertexSize(DWORD FVF)
HRESULT WINAPI D3DXDeclaratorFromFVF(DWORD fvf, D3DVERTEXELEMENT9 declaration[MAX_FVF_DECL_SIZE])
HRESULT WINAPI D3DXFVFFromDeclarator(const D3DVERTEXELEMENT9 *declaration, DWORD *fvf)
static unsigned int palette_size(DWORD flags)
#define HeapFree(x, y, z)
GLuint GLuint GLsizei count
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
#define memcpy(s1, s2, n)
#define IsEqualGUID(rguid1, rguid2)
static HRESULT WINAPI d3dx9_skin_info_FindBoneVertexInfluenceIndex(ID3DXSkinInfo *iface, DWORD bone_num, DWORD vertex_num, DWORD *influence_index)
static float WINAPI d3dx9_skin_info_GetMinBoneInfluence(ID3DXSkinInfo *iface)
static HRESULT WINAPI d3dx9_skin_info_Clone(ID3DXSkinInfo *iface, ID3DXSkinInfo **skin_info)
static HRESULT WINAPI d3dx9_skin_info_SetFVF(ID3DXSkinInfo *iface, DWORD fvf)
static HRESULT WINAPI d3dx9_skin_info_GetBoneInfluence(ID3DXSkinInfo *iface, DWORD bone_num, DWORD *vertices, float *weights)
static const char *WINAPI d3dx9_skin_info_GetBoneName(ID3DXSkinInfo *iface, DWORD bone_idx)
static HRESULT WINAPI d3dx9_skin_info_ConvertToBlendedMesh(ID3DXSkinInfo *iface, ID3DXMesh *mesh_in, DWORD options, const DWORD *adjacency_in, DWORD *adjacency_out, DWORD *face_remap, ID3DXBuffer **vertex_remap, DWORD *max_face_infl, DWORD *num_bone_combinations, ID3DXBuffer **bone_combination_table, ID3DXMesh **mesh_out)
static HRESULT WINAPI d3dx9_skin_info_ConvertToIndexedBlendedMesh(ID3DXSkinInfo *iface, ID3DXMesh *mesh_in, DWORD options, DWORD palette_size, const DWORD *adjacency_in, DWORD *adjacency_out, DWORD *face_remap, ID3DXBuffer **vertex_remap, DWORD *max_face_infl, DWORD *num_bone_combinations, ID3DXBuffer **bone_combination_table, ID3DXMesh **mesh_out)
static const struct ID3DXSkinInfoVtbl d3dx9_skin_info_vtbl
static HRESULT WINAPI d3dx9_skin_info_SetBoneInfluence(ID3DXSkinInfo *iface, DWORD bone_num, DWORD num_influences, const DWORD *vertices, const float *weights)
static HRESULT WINAPI d3dx9_skin_info_GetDeclaration(ID3DXSkinInfo *iface, D3DVERTEXELEMENT9 declaration[MAX_FVF_DECL_SIZE])
static HRESULT WINAPI d3dx9_skin_info_SetBoneVertexInfluence(ID3DXSkinInfo *iface, DWORD bone_num, DWORD influence_num, float weight)
static HRESULT WINAPI d3dx9_skin_info_GetMaxVertexInfluences(ID3DXSkinInfo *iface, DWORD *max_vertex_influences)
static HRESULT WINAPI d3dx9_skin_info_GetBoneVertexInfluence(ID3DXSkinInfo *iface, DWORD bone_num, DWORD influence_num, float *weight, DWORD *vertex_num)
static ULONG WINAPI d3dx9_skin_info_Release(ID3DXSkinInfo *iface)
static HRESULT WINAPI d3dx9_skin_info_SetBoneOffsetMatrix(ID3DXSkinInfo *iface, DWORD bone_num, const D3DXMATRIX *bone_transform)
static struct d3dx9_skin_info * impl_from_ID3DXSkinInfo(ID3DXSkinInfo *iface)
static HRESULT WINAPI d3dx9_skin_info_GetMaxFaceInfluences(struct ID3DXSkinInfo *iface, struct IDirect3DIndexBuffer9 *index_buffer, DWORD num_faces, DWORD *max_face_influences)
static D3DXMATRIX *WINAPI d3dx9_skin_info_GetBoneOffsetMatrix(ID3DXSkinInfo *iface, DWORD bone_num)
static HRESULT WINAPI d3dx9_skin_info_QueryInterface(ID3DXSkinInfo *iface, REFIID riid, void **out)
HRESULT WINAPI D3DXCreateSkinInfo(DWORD num_vertices, const D3DVERTEXELEMENT9 *declaration, DWORD num_bones, ID3DXSkinInfo **skin_info)
static DWORD WINAPI d3dx9_skin_info_GetNumBoneInfluences(ID3DXSkinInfo *iface, DWORD bone_num)
HRESULT WINAPI D3DXCreateSkinInfoFVF(DWORD num_vertices, DWORD fvf, DWORD num_bones, ID3DXSkinInfo **skin_info)
static HRESULT WINAPI d3dx9_skin_info_UpdateSkinnedMesh(ID3DXSkinInfo *iface, const D3DXMATRIX *bone_transforms, const D3DXMATRIX *bone_inv_transpose_transforms, const void *src_vertices, void *dst_vertices)
static HRESULT WINAPI d3dx9_skin_info_SetBoneName(ID3DXSkinInfo *iface, DWORD bone_idx, const char *name)
static HRESULT WINAPI d3dx9_skin_info_Remap(ID3DXSkinInfo *iface, DWORD num_vertices, DWORD *vertex_remap)
static ULONG WINAPI d3dx9_skin_info_AddRef(ID3DXSkinInfo *iface)
static HRESULT WINAPI d3dx9_skin_info_SetMinBoneInfluence(ID3DXSkinInfo *iface, float min_influence)
static HRESULT WINAPI d3dx9_skin_info_SetDeclaration(ID3DXSkinInfo *iface, const D3DVERTEXELEMENT9 *declaration)
static DWORD WINAPI d3dx9_skin_info_GetNumBones(ID3DXSkinInfo *iface)
static DWORD WINAPI d3dx9_skin_info_GetFVF(ID3DXSkinInfo *iface)
ID3DXSkinInfo ID3DXSkinInfo_iface
D3DVERTEXELEMENT9 vertex_declaration[MAX_FVF_DECL_SIZE]
#define CONTAINING_RECORD(address, type, field)