23 #include "wine/port.h" 61 IUnknown_AddRef(iface);
76 TRACE(
"%p increasing refcount to %u.\n", skin, refcount);
86 TRACE(
"%p decreasing refcount to %u.\n", skin, refcount);
113 TRACE(
"iface %p, bone_num %u, num_influences %u, vertices %p, weights %p.\n",
144 FIXME(
"iface %p, bone_num %u, influence_num %u, weight %.8e stub!\n",
145 iface, bone_num, influence_num,
weight);
154 TRACE(
"iface %p, bone_num %u.\n", iface, bone_num);
159 return skin->
bones[bone_num].num_influences;
168 TRACE(
"iface %p, bone_num %u, vertices %p, weights %p.\n",
188 FIXME(
"iface %p, bone_num %u, influence_num %u, weight %p, vertex_num %p stub!\n",
189 iface, bone_num, influence_num,
weight, vertex_num);
196 FIXME(
"iface %p, max_vertex_influences %p stub!\n", iface, max_vertex_influences);
205 TRACE(
"iface %p.\n", iface);
213 FIXME(
"iface %p, bone_num %u, vertex_num %u, influence_index %p stub!\n",
214 iface, bone_num, vertex_num, influence_index);
220 struct IDirect3DIndexBuffer9 *index_buffer,
DWORD num_faces,
DWORD *max_face_influences)
222 FIXME(
"iface %p, index_buffer %p, num_faces %u, max_face_influences %p stub!\n",
223 iface, index_buffer, num_faces, max_face_influences);
230 FIXME(
"iface %p, min_influence %.8e stub!\n", iface, min_influence);
237 FIXME(
"iface %p stub!\n", iface);
259 skin->
bones[bone_idx].name = new_name;
268 TRACE(
"iface %p, bone_idx %u.\n", iface, bone_idx);
273 return skin->
bones[bone_idx].name;
281 TRACE(
"iface %p, bone_num %u, bone_transform %p.\n", iface, bone_num, bone_transform);
283 if (bone_num >= skin->
num_bones || !bone_transform)
286 skin->
bones[bone_num].transform = *bone_transform;
294 TRACE(
"iface %p, bone_num %u.\n", iface, bone_num);
299 return &skin->
bones[bone_num].transform;
304 FIXME(
"iface %p, skin_info %p stub!\n", iface, skin_info);
311 FIXME(
"iface %p, num_vertices %u, vertex_remap %p stub!\n", iface,
num_vertices, vertex_remap);
321 TRACE(
"iface %p, fvf %#x.\n", iface,
fvf);
326 return iface->lpVtbl->SetDeclaration(iface,
declaration);
341 WARN(
"Invalid vertex element %u; contains non-zero stream %u\n",
360 TRACE(
"iface %p.\n", iface);
379 const D3DXMATRIX *bone_inv_transpose_transforms,
const void *src_vertices,
void *dst_vertices)
385 TRACE(
"iface %p, bone_transforms %p, bone_inv_transpose_transforms %p, src_vertices %p, dst_vertices %p\n",
386 skin, bone_transforms, bone_inv_transpose_transforms, src_vertices, dst_vertices);
388 if (bone_inv_transpose_transforms)
389 FIXME(
"Skinning vertices with two position elements not supported\n");
412 for (
j = 0;
j < skin->
bones[
i].num_influences;
j++) {
419 position_dest->
x +=
weight * position.
x;
420 position_dest->
y +=
weight * position.
y;
421 position_dest->
z +=
weight * position.
z;
441 for (
j = 0;
j < skin->
bones[
i].num_influences;
j++) {
458 if ((normal_dest->
x != 0.0f) && (normal_dest->
y != 0.0f) && (normal_dest->
z != 0.0f))
469 ID3DXBuffer **bone_combination_table, ID3DXMesh **mesh_out)
471 FIXME(
"iface %p, mesh_in %p, options %#x, adjacency_in %p, adjacency_out %p, face_remap %p, vertex_remap %p, " 472 "max_face_infl %p, num_bone_combinations %p, bone_combination_table %p, mesh_out %p stub!\n",
473 iface, mesh_in,
options, adjacency_in, adjacency_out, face_remap, vertex_remap,
474 max_face_infl, num_bone_combinations, bone_combination_table, mesh_out);
482 ID3DXBuffer **bone_combination_table, ID3DXMesh **mesh_out)
484 FIXME(
"iface %p, mesh_in %p, options %#x, palette_size %u, adjacency_in %p, adjacency_out %p, face_remap %p, vertex_remap %p, " 485 "max_face_infl %p, num_bone_combinations %p, bone_combination_table %p, mesh_out %p stub!\n",
486 iface, mesh_in,
options,
palette_size, adjacency_in, adjacency_out, face_remap, vertex_remap,
487 max_face_infl, num_bone_combinations, bone_combination_table, mesh_out);
524 DWORD num_bones, ID3DXSkinInfo **skin_info)
530 TRACE(
"num_vertices %u, declaration %p, num_bones %u, skin_info %p.\n",
544 object->vertex_declaration[0] = empty_declaration;
556 *skin_info = &
object->ID3DXSkinInfo_iface;
589 object->num_vertices = 0;
590 object->num_bones = 0;
591 object->vertex_declaration[0] = empty_declaration;
593 object->bones =
NULL;
595 *iface = &
object->ID3DXSkinInfo_iface;
static const struct ID3DXSkinInfoVtbl d3dx9_skin_info_vtbl
D3DVERTEXELEMENT9 vertex_declaration[MAX_FVF_DECL_SIZE]
static DWORD WINAPI d3dx9_skin_info_GetNumBones(ID3DXSkinInfo *iface)
ACPI_SIZE strlen(const char *String)
D3DXVECTOR3 *WINAPI D3DXVec3TransformNormal(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv, const D3DXMATRIX *pm)
D3DXMATRIX *WINAPI D3DXMatrixMultiply(D3DXMATRIX *pout, const D3DXMATRIX *pm1, const D3DXMATRIX *pm2)
static HRESULT WINAPI d3dx9_skin_info_GetMaxVertexInfluences(ID3DXSkinInfo *iface, DWORD *max_vertex_influences)
GLuint GLuint GLsizei count
static D3DXMATRIX *WINAPI d3dx9_skin_info_GetBoneOffsetMatrix(ID3DXSkinInfo *iface, DWORD bone_num)
static HRESULT WINAPI d3dx9_skin_info_Remap(ID3DXSkinInfo *iface, DWORD num_vertices, DWORD *vertex_remap)
static DWORD WINAPI d3dx9_skin_info_GetNumBoneInfluences(ID3DXSkinInfo *iface, DWORD bone_num)
#define D3DERR_INVALIDCALL
UINT WINAPI D3DXGetFVFVertexSize(DWORD FVF)
static HRESULT WINAPI d3dx9_skin_info_QueryInterface(ID3DXSkinInfo *iface, REFIID riid, void **out)
static HRESULT WINAPI d3dx9_skin_info_SetMinBoneInfluence(ID3DXSkinInfo *iface, float min_influence)
WINE_DEFAULT_DEBUG_CHANNEL(d3dx)
static HRESULT WINAPI d3dx9_skin_info_SetBoneVertexInfluence(ID3DXSkinInfo *iface, DWORD bone_num, DWORD influence_num, float weight)
static HRESULT WINAPI d3dx9_skin_info_SetBoneInfluence(ID3DXSkinInfo *iface, DWORD bone_num, DWORD num_influences, const DWORD *vertices, const float *weights)
ID3DXSkinInfo ID3DXSkinInfo_iface
#define D3DFVF_POSITION_MASK
static HRESULT WINAPI d3dx9_skin_info_FindBoneVertexInfluenceIndex(ID3DXSkinInfo *iface, DWORD bone_num, DWORD vertex_num, DWORD *influence_index)
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 float WINAPI d3dx9_skin_info_GetMinBoneInfluence(ID3DXSkinInfo *iface)
static HRESULT WINAPI d3dx9_skin_info_SetFVF(ID3DXSkinInfo *iface, DWORD fvf)
struct ID3DXBuffer ID3DXBuffer
static HRESULT WINAPI d3dx9_skin_info_GetBoneInfluence(ID3DXSkinInfo *iface, DWORD bone_num, DWORD *vertices, float *weights)
static DWORD WINAPI d3dx9_skin_info_GetFVF(ID3DXSkinInfo *iface)
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
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
static HRESULT WINAPI d3dx9_skin_info_SetBoneOffsetMatrix(ID3DXSkinInfo *iface, DWORD bone_num, const D3DXMATRIX *bone_transform)
D3DXMATRIX *WINAPI D3DXMatrixInverse(D3DXMATRIX *pout, FLOAT *pdeterminant, const D3DXMATRIX *pm)
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static HRESULT WINAPI d3dx9_skin_info_GetDeclaration(ID3DXSkinInfo *iface, D3DVERTEXELEMENT9 declaration[MAX_FVF_DECL_SIZE])
struct _D3DVECTOR D3DXVECTOR3
static HRESULT WINAPI d3dx9_skin_info_SetBoneName(ID3DXSkinInfo *iface, DWORD bone_idx, const char *name)
static HRESULT WINAPI d3dx9_skin_info_GetMaxFaceInfluences(struct ID3DXSkinInfo *iface, struct IDirect3DIndexBuffer9 *index_buffer, DWORD num_faces, DWORD *max_face_influences)
D3DXVECTOR3 *WINAPI D3DXVec3TransformCoord(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv, const D3DXMATRIX *pm)
HRESULT WINAPI D3DXFVFFromDeclarator(const D3DVERTEXELEMENT9 *declaration, DWORD *fvf)
static HRESULT WINAPI d3dx9_skin_info_SetDeclaration(ID3DXSkinInfo *iface, const D3DVERTEXELEMENT9 *declaration)
#define InterlockedDecrement
static unsigned int palette_size(DWORD flags)
#define memcpy(s1, s2, n)
static const char *WINAPI d3dx9_skin_info_GetBoneName(ID3DXSkinInfo *iface, DWORD bone_idx)
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)
HRESULT WINAPI D3DXCreateSkinInfo(DWORD num_vertices, const D3DVERTEXELEMENT9 *declaration, DWORD num_bones, ID3DXSkinInfo **skin_info)
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)
HRESULT WINAPI D3DXDeclaratorFromFVF(DWORD fvf, D3DVERTEXELEMENT9 declaration[MAX_FVF_DECL_SIZE])
#define InterlockedIncrement
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
HRESULT WINAPI D3DXCreateSkinInfoFVF(DWORD num_vertices, DWORD fvf, DWORD num_bones, ID3DXSkinInfo **skin_info)
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
static struct d3dx9_skin_info * impl_from_ID3DXSkinInfo(ID3DXSkinInfo *iface)
static HRESULT WINAPI d3dx9_skin_info_Clone(ID3DXSkinInfo *iface, ID3DXSkinInfo **skin_info)
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_AddRef(ID3DXSkinInfo *iface)
HRESULT create_dummy_skin(ID3DXSkinInfo **iface)
D3DXVECTOR3 *WINAPI D3DXVec3Normalize(D3DXVECTOR3 *pout, const D3DXVECTOR3 *pv)
static ULONG WINAPI d3dx9_skin_info_Release(ID3DXSkinInfo *iface)
#define HeapFree(x, y, z)
_Inout_opt_ PUNICODE_STRING _Inout_opt_ PUNICODE_STRING Stream