ReactOS 0.4.17-dev-966-gf06eace
meshbuilder.c File Reference
#include "d3drm_private.h"
Include dependency graph for meshbuilder.c:

Go to the source code of this file.

Classes

struct  coords_2d
 
struct  mesh_material
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (d3drm)
 
BOOL d3drm_array_reserve (void **elements, SIZE_T *capacity, SIZE_T element_count, SIZE_T element_size)
 
static struct d3drm_mesh * impl_from_IDirect3DRMMesh (IDirect3DRMMesh *iface)
 
static struct d3drm_mesh_builder * impl_from_IDirect3DRMMeshBuilder2 (IDirect3DRMMeshBuilder2 *iface)
 
static struct d3drm_mesh_builder * impl_from_IDirect3DRMMeshBuilder3 (IDirect3DRMMeshBuilder3 *iface)
 
static struct d3drm_wrap * impl_from_IDirect3DRMWrap (IDirect3DRMWrap *iface)
 
static void clean_mesh_builder_data (struct d3drm_mesh_builder *mesh_builder)
 
static HRESULT WINAPI d3drm_mesh_builder2_QueryInterface (IDirect3DRMMeshBuilder2 *iface, REFIID riid, void **out)
 
static ULONG WINAPI d3drm_mesh_builder2_AddRef (IDirect3DRMMeshBuilder2 *iface)
 
static ULONG WINAPI d3drm_mesh_builder2_Release (IDirect3DRMMeshBuilder2 *iface)
 
static HRESULT WINAPI d3drm_mesh_builder2_Clone (IDirect3DRMMeshBuilder2 *iface, IUnknown *outer, REFIID iid, void **out)
 
static HRESULT WINAPI d3drm_mesh_builder2_AddDestroyCallback (IDirect3DRMMeshBuilder2 *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
 
static HRESULT WINAPI d3drm_mesh_builder2_DeleteDestroyCallback (IDirect3DRMMeshBuilder2 *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
 
static HRESULT WINAPI d3drm_mesh_builder3_SetAppData (IDirect3DRMMeshBuilder3 *iface, DWORD data)
 
static HRESULT WINAPI d3drm_mesh_builder2_SetAppData (IDirect3DRMMeshBuilder2 *iface, DWORD data)
 
static DWORD WINAPI d3drm_mesh_builder3_GetAppData (IDirect3DRMMeshBuilder3 *iface)
 
static DWORD WINAPI d3drm_mesh_builder2_GetAppData (IDirect3DRMMeshBuilder2 *iface)
 
static HRESULT WINAPI d3drm_mesh_builder2_SetName (IDirect3DRMMeshBuilder2 *iface, const char *name)
 
static HRESULT WINAPI d3drm_mesh_builder2_GetName (IDirect3DRMMeshBuilder2 *iface, DWORD *size, char *name)
 
static HRESULT WINAPI d3drm_mesh_builder2_GetClassName (IDirect3DRMMeshBuilder2 *iface, DWORD *size, char *name)
 
static HRESULT WINAPI d3drm_mesh_builder2_Load (IDirect3DRMMeshBuilder2 *iface, void *filename, void *name, D3DRMLOADOPTIONS flags, D3DRMLOADTEXTURECALLBACK cb, void *ctx)
 
static HRESULT WINAPI d3drm_mesh_builder2_Save (IDirect3DRMMeshBuilder2 *iface, const char *filename, D3DRMXOFFORMAT format, D3DRMSAVEOPTIONS flags)
 
static HRESULT WINAPI d3drm_mesh_builder2_Scale (IDirect3DRMMeshBuilder2 *iface, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz)
 
static HRESULT WINAPI d3drm_mesh_builder2_Translate (IDirect3DRMMeshBuilder2 *iface, D3DVALUE tx, D3DVALUE ty, D3DVALUE tz)
 
static HRESULT WINAPI d3drm_mesh_builder2_SetColorSource (IDirect3DRMMeshBuilder2 *iface, D3DRMCOLORSOURCE source)
 
static HRESULT WINAPI d3drm_mesh_builder2_GetBox (IDirect3DRMMeshBuilder2 *iface, D3DRMBOX *box)
 
static HRESULT WINAPI d3drm_mesh_builder2_GenerateNormals (IDirect3DRMMeshBuilder2 *iface)
 
static D3DRMCOLORSOURCE WINAPI d3drm_mesh_builder2_GetColorSource (IDirect3DRMMeshBuilder2 *iface)
 
static HRESULT WINAPI d3drm_mesh_builder2_AddMesh (IDirect3DRMMeshBuilder2 *iface, IDirect3DRMMesh *mesh)
 
static HRESULT WINAPI d3drm_mesh_builder2_AddMeshBuilder (IDirect3DRMMeshBuilder2 *iface, IDirect3DRMMeshBuilder *mesh_builder)
 
static HRESULT WINAPI d3drm_mesh_builder2_AddFrame (IDirect3DRMMeshBuilder2 *iface, IDirect3DRMFrame *frame)
 
static HRESULT WINAPI d3drm_mesh_builder2_AddFace (IDirect3DRMMeshBuilder2 *iface, IDirect3DRMFace *face)
 
static HRESULT WINAPI d3drm_mesh_builder2_AddFaces (IDirect3DRMMeshBuilder2 *iface, DWORD vertex_count, D3DVECTOR *vertices, DWORD normal_count, D3DVECTOR *normals, DWORD *face_data, IDirect3DRMFaceArray **array)
 
static HRESULT WINAPI d3drm_mesh_builder2_ReserveSpace (IDirect3DRMMeshBuilder2 *iface, DWORD vertex_count, DWORD normal_count, DWORD face_count)
 
static HRESULT WINAPI d3drm_mesh_builder2_SetColorRGB (IDirect3DRMMeshBuilder2 *iface, D3DVALUE red, D3DVALUE green, D3DVALUE blue)
 
static HRESULT WINAPI d3drm_mesh_builder2_SetColor (IDirect3DRMMeshBuilder2 *iface, D3DCOLOR color)
 
static HRESULT WINAPI d3drm_mesh_builder2_SetTexture (IDirect3DRMMeshBuilder2 *iface, IDirect3DRMTexture *texture)
 
static HRESULT WINAPI d3drm_mesh_builder2_SetMaterial (IDirect3DRMMeshBuilder2 *iface, IDirect3DRMMaterial *material)
 
static HRESULT WINAPI d3drm_mesh_builder2_SetTextureTopology (IDirect3DRMMeshBuilder2 *iface, BOOL wrap_u, BOOL wrap_v)
 
static HRESULT WINAPI d3drm_mesh_builder2_SetQuality (IDirect3DRMMeshBuilder2 *iface, D3DRMRENDERQUALITY quality)
 
static HRESULT WINAPI d3drm_mesh_builder2_SetPerspective (IDirect3DRMMeshBuilder2 *iface, BOOL enable)
 
static HRESULT WINAPI d3drm_mesh_builder2_SetVertex (IDirect3DRMMeshBuilder2 *iface, DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z)
 
static HRESULT WINAPI d3drm_mesh_builder2_SetNormal (IDirect3DRMMeshBuilder2 *iface, DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z)
 
static HRESULT WINAPI d3drm_mesh_builder2_SetTextureCoordinates (IDirect3DRMMeshBuilder2 *iface, DWORD index, D3DVALUE u, D3DVALUE v)
 
static HRESULT WINAPI d3drm_mesh_builder2_SetVertexColor (IDirect3DRMMeshBuilder2 *iface, DWORD index, D3DCOLOR color)
 
static HRESULT WINAPI d3drm_mesh_builder2_SetVertexColorRGB (IDirect3DRMMeshBuilder2 *iface, DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue)
 
static HRESULT WINAPI d3drm_mesh_builder2_GetFaces (IDirect3DRMMeshBuilder2 *iface, IDirect3DRMFaceArray **array)
 
static HRESULT WINAPI d3drm_mesh_builder2_GetVertices (IDirect3DRMMeshBuilder2 *iface, DWORD *vertex_count, D3DVECTOR *vertices, DWORD *normal_count, D3DVECTOR *normals, DWORD *face_data_size, DWORD *face_data)
 
static HRESULT WINAPI d3drm_mesh_builder2_GetTextureCoordinates (IDirect3DRMMeshBuilder2 *iface, DWORD index, D3DVALUE *u, D3DVALUE *v)
 
static int WINAPI d3drm_mesh_builder2_AddVertex (IDirect3DRMMeshBuilder2 *iface, D3DVALUE x, D3DVALUE y, D3DVALUE z)
 
static int WINAPI d3drm_mesh_builder2_AddNormal (IDirect3DRMMeshBuilder2 *iface, D3DVALUE x, D3DVALUE y, D3DVALUE z)
 
static HRESULT WINAPI d3drm_mesh_builder2_CreateFace (IDirect3DRMMeshBuilder2 *iface, IDirect3DRMFace **face)
 
static D3DRMRENDERQUALITY WINAPI d3drm_mesh_builder2_GetQuality (IDirect3DRMMeshBuilder2 *iface)
 
static BOOL WINAPI d3drm_mesh_builder2_GetPerspective (IDirect3DRMMeshBuilder2 *iface)
 
static int WINAPI d3drm_mesh_builder2_GetFaceCount (IDirect3DRMMeshBuilder2 *iface)
 
static int WINAPI d3drm_mesh_builder2_GetVertexCount (IDirect3DRMMeshBuilder2 *iface)
 
static D3DCOLOR WINAPI d3drm_mesh_builder2_GetVertexColor (IDirect3DRMMeshBuilder2 *iface, DWORD index)
 
static HRESULT WINAPI d3drm_mesh_builder2_CreateMesh (IDirect3DRMMeshBuilder2 *iface, IDirect3DRMMesh **mesh)
 
static HRESULT WINAPI d3drm_mesh_builder2_GenerateNormals2 (IDirect3DRMMeshBuilder2 *iface, D3DVALUE crease, DWORD flags)
 
static HRESULT WINAPI d3drm_mesh_builder2_GetFace (IDirect3DRMMeshBuilder2 *iface, DWORD index, IDirect3DRMFace **face)
 
static HRESULT WINAPI d3drm_mesh_builder3_QueryInterface (IDirect3DRMMeshBuilder3 *iface, REFIID riid, void **out)
 
static ULONG WINAPI d3drm_mesh_builder3_AddRef (IDirect3DRMMeshBuilder3 *iface)
 
static ULONG WINAPI d3drm_mesh_builder3_Release (IDirect3DRMMeshBuilder3 *iface)
 
static HRESULT WINAPI d3drm_mesh_builder3_Clone (IDirect3DRMMeshBuilder3 *iface, IUnknown *outer, REFIID iid, void **out)
 
static HRESULT WINAPI d3drm_mesh_builder3_AddDestroyCallback (IDirect3DRMMeshBuilder3 *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
 
static HRESULT WINAPI d3drm_mesh_builder3_DeleteDestroyCallback (IDirect3DRMMeshBuilder3 *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
 
static HRESULT WINAPI d3drm_mesh_builder3_SetName (IDirect3DRMMeshBuilder3 *iface, const char *name)
 
static HRESULT WINAPI d3drm_mesh_builder3_GetName (IDirect3DRMMeshBuilder3 *iface, DWORD *size, char *name)
 
static HRESULT WINAPI d3drm_mesh_builder3_GetClassName (IDirect3DRMMeshBuilder3 *iface, DWORD *size, char *name)
 
HRESULT load_mesh_data (IDirect3DRMMeshBuilder3 *iface, IDirectXFileData *pData, D3DRMLOADTEXTURECALLBACK load_texture_proc, void *arg)
 
static HRESULT WINAPI d3drm_mesh_builder3_Load (IDirect3DRMMeshBuilder3 *iface, void *filename, void *name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURE3CALLBACK cb, void *arg)
 
static HRESULT WINAPI d3drm_mesh_builder3_Save (IDirect3DRMMeshBuilder3 *iface, const char *filename, D3DRMXOFFORMAT format, D3DRMSAVEOPTIONS flags)
 
static HRESULT WINAPI d3drm_mesh_builder3_Scale (IDirect3DRMMeshBuilder3 *iface, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz)
 
static HRESULT WINAPI d3drm_mesh_builder3_Translate (IDirect3DRMMeshBuilder3 *iface, D3DVALUE tx, D3DVALUE ty, D3DVALUE tz)
 
static HRESULT WINAPI d3drm_mesh_builder3_SetColorSource (IDirect3DRMMeshBuilder3 *iface, D3DRMCOLORSOURCE source)
 
static HRESULT WINAPI d3drm_mesh_builder3_GetBox (IDirect3DRMMeshBuilder3 *iface, D3DRMBOX *box)
 
static HRESULT WINAPI d3drm_mesh_builder3_GenerateNormals (IDirect3DRMMeshBuilder3 *iface, D3DVALUE crease, DWORD flags)
 
static D3DRMCOLORSOURCE WINAPI d3drm_mesh_builder3_GetColorSource (IDirect3DRMMeshBuilder3 *iface)
 
static HRESULT WINAPI d3drm_mesh_builder3_AddMesh (IDirect3DRMMeshBuilder3 *iface, IDirect3DRMMesh *mesh)
 
static HRESULT WINAPI d3drm_mesh_builder3_AddMeshBuilder (IDirect3DRMMeshBuilder3 *iface, IDirect3DRMMeshBuilder3 *mesh_builder, DWORD flags)
 
static HRESULT WINAPI d3drm_mesh_builder3_AddFrame (IDirect3DRMMeshBuilder3 *iface, IDirect3DRMFrame3 *frame)
 
static HRESULT WINAPI d3drm_mesh_builder3_AddFace (IDirect3DRMMeshBuilder3 *iface, IDirect3DRMFace2 *face)
 
static HRESULT WINAPI d3drm_mesh_builder3_AddFaces (IDirect3DRMMeshBuilder3 *iface, DWORD vertex_count, D3DVECTOR *vertices, DWORD normal_count, D3DVECTOR *normals, DWORD *face_data, IDirect3DRMFaceArray **array)
 
static HRESULT WINAPI d3drm_mesh_builder3_ReserveSpace (IDirect3DRMMeshBuilder3 *iface, DWORD vertex_count, DWORD normal_count, DWORD face_count)
 
static HRESULT WINAPI d3drm_mesh_builder3_SetColorRGB (IDirect3DRMMeshBuilder3 *iface, D3DVALUE red, D3DVALUE green, D3DVALUE blue)
 
static HRESULT WINAPI d3drm_mesh_builder3_SetColor (IDirect3DRMMeshBuilder3 *iface, D3DCOLOR color)
 
static HRESULT WINAPI d3drm_mesh_builder3_SetTexture (IDirect3DRMMeshBuilder3 *iface, IDirect3DRMTexture3 *texture)
 
static HRESULT WINAPI d3drm_mesh_builder3_SetMaterial (IDirect3DRMMeshBuilder3 *iface, IDirect3DRMMaterial2 *material)
 
static HRESULT WINAPI d3drm_mesh_builder3_SetTextureTopology (IDirect3DRMMeshBuilder3 *iface, BOOL wrap_u, BOOL wrap_v)
 
static HRESULT WINAPI d3drm_mesh_builder3_SetQuality (IDirect3DRMMeshBuilder3 *iface, D3DRMRENDERQUALITY quality)
 
static HRESULT WINAPI d3drm_mesh_builder3_SetPerspective (IDirect3DRMMeshBuilder3 *iface, BOOL enable)
 
static HRESULT WINAPI d3drm_mesh_builder3_SetVertex (IDirect3DRMMeshBuilder3 *iface, DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z)
 
static HRESULT WINAPI d3drm_mesh_builder3_SetNormal (IDirect3DRMMeshBuilder3 *iface, DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z)
 
static HRESULT WINAPI d3drm_mesh_builder3_SetTextureCoordinates (IDirect3DRMMeshBuilder3 *iface, DWORD index, D3DVALUE u, D3DVALUE v)
 
static HRESULT WINAPI d3drm_mesh_builder3_SetVertexColor (IDirect3DRMMeshBuilder3 *iface, DWORD index, D3DCOLOR color)
 
static HRESULT WINAPI d3drm_mesh_builder3_SetVertexColorRGB (IDirect3DRMMeshBuilder3 *iface, DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue)
 
static HRESULT WINAPI d3drm_mesh_builder3_GetFaces (IDirect3DRMMeshBuilder3 *iface, IDirect3DRMFaceArray **array)
 
static HRESULT WINAPI d3drm_mesh_builder3_GetGeometry (IDirect3DRMMeshBuilder3 *iface, DWORD *vertex_count, D3DVECTOR *vertices, DWORD *normal_count, D3DVECTOR *normals, DWORD *face_data_size, DWORD *face_data)
 
static HRESULT WINAPI d3drm_mesh_builder3_GetTextureCoordinates (IDirect3DRMMeshBuilder3 *iface, DWORD index, D3DVALUE *u, D3DVALUE *v)
 
static int WINAPI d3drm_mesh_builder3_AddVertex (IDirect3DRMMeshBuilder3 *iface, D3DVALUE x, D3DVALUE y, D3DVALUE z)
 
static int WINAPI d3drm_mesh_builder3_AddNormal (IDirect3DRMMeshBuilder3 *iface, D3DVALUE x, D3DVALUE y, D3DVALUE z)
 
static HRESULT WINAPI d3drm_mesh_builder3_CreateFace (IDirect3DRMMeshBuilder3 *iface, IDirect3DRMFace2 **face)
 
static D3DRMRENDERQUALITY WINAPI d3drm_mesh_builder3_GetQuality (IDirect3DRMMeshBuilder3 *iface)
 
static BOOL WINAPI d3drm_mesh_builder3_GetPerspective (IDirect3DRMMeshBuilder3 *iface)
 
static int WINAPI d3drm_mesh_builder3_GetFaceCount (IDirect3DRMMeshBuilder3 *iface)
 
static int WINAPI d3drm_mesh_builder3_GetVertexCount (IDirect3DRMMeshBuilder3 *iface)
 
static D3DCOLOR WINAPI d3drm_mesh_builder3_GetVertexColor (IDirect3DRMMeshBuilder3 *iface, DWORD index)
 
static HRESULT WINAPI d3drm_mesh_builder3_CreateMesh (IDirect3DRMMeshBuilder3 *iface, IDirect3DRMMesh **mesh)
 
static HRESULT WINAPI d3drm_mesh_builder3_GetFace (IDirect3DRMMeshBuilder3 *iface, DWORD index, IDirect3DRMFace2 **face)
 
static HRESULT WINAPI d3drm_mesh_builder3_GetVertex (IDirect3DRMMeshBuilder3 *iface, DWORD index, D3DVECTOR *vector)
 
static HRESULT WINAPI d3drm_mesh_builder3_GetNormal (IDirect3DRMMeshBuilder3 *iface, DWORD index, D3DVECTOR *vector)
 
static HRESULT WINAPI d3drm_mesh_builder3_DeleteVertices (IDirect3DRMMeshBuilder3 *iface, DWORD start_idx, DWORD count)
 
static HRESULT WINAPI d3drm_mesh_builder3_DeleteNormals (IDirect3DRMMeshBuilder3 *iface, DWORD start_idx, DWORD count)
 
static HRESULT WINAPI d3drm_mesh_builder3_DeleteFace (IDirect3DRMMeshBuilder3 *iface, IDirect3DRMFace2 *face)
 
static HRESULT WINAPI d3drm_mesh_builder3_Empty (IDirect3DRMMeshBuilder3 *iface, DWORD flags)
 
static HRESULT WINAPI d3drm_mesh_builder3_Optimize (IDirect3DRMMeshBuilder3 *iface, DWORD flags)
 
static HRESULT WINAPI d3drm_mesh_builder3_AddFacesIndexed (IDirect3DRMMeshBuilder3 *iface, DWORD flags, DWORD *indices, DWORD *start_idx, DWORD *count)
 
static HRESULT WINAPI d3drm_mesh_builder3_CreateSubMesh (IDirect3DRMMeshBuilder3 *iface, IUnknown **mesh)
 
static HRESULT WINAPI d3drm_mesh_builder3_GetParentMesh (IDirect3DRMMeshBuilder3 *iface, DWORD flags, IUnknown **parent)
 
static HRESULT WINAPI d3drm_mesh_builder3_GetSubMeshes (IDirect3DRMMeshBuilder3 *iface, DWORD *count, IUnknown **meshes)
 
static HRESULT WINAPI d3drm_mesh_builder3_DeleteSubMesh (IDirect3DRMMeshBuilder3 *iface, IUnknown *mesh)
 
static HRESULT WINAPI d3drm_mesh_builder3_Enable (IDirect3DRMMeshBuilder3 *iface, DWORD index)
 
static HRESULT WINAPI d3drm_mesh_builder3_GetEnable (IDirect3DRMMeshBuilder3 *iface, DWORD *indices)
 
static HRESULT WINAPI d3drm_mesh_builder3_AddTriangles (IDirect3DRMMeshBuilder3 *iface, DWORD flags, DWORD format, DWORD vertex_count, void *data)
 
static HRESULT WINAPI d3drm_mesh_builder3_SetVertices (IDirect3DRMMeshBuilder3 *iface, DWORD start_idx, DWORD count, D3DVECTOR *vector)
 
static HRESULT WINAPI d3drm_mesh_builder3_GetVertices (IDirect3DRMMeshBuilder3 *iface, DWORD start_idx, DWORD *vertex_count, D3DVECTOR *vertices)
 
static HRESULT WINAPI d3drm_mesh_builder3_SetNormals (IDirect3DRMMeshBuilder3 *iface, DWORD start_idx, DWORD count, D3DVECTOR *vector)
 
static HRESULT WINAPI d3drm_mesh_builder3_GetNormals (IDirect3DRMMeshBuilder3 *iface, DWORD start_idx, DWORD *normal_count, D3DVECTOR *normals)
 
static int WINAPI d3drm_mesh_builder3_GetNormalCount (IDirect3DRMMeshBuilder3 *iface)
 
HRESULT d3drm_mesh_builder_create (struct d3drm_mesh_builder **mesh_builder, IDirect3DRM *d3drm)
 
static HRESULT WINAPI d3drm_mesh_QueryInterface (IDirect3DRMMesh *iface, REFIID riid, void **out)
 
static ULONG WINAPI d3drm_mesh_AddRef (IDirect3DRMMesh *iface)
 
static ULONG WINAPI d3drm_mesh_Release (IDirect3DRMMesh *iface)
 
static HRESULT WINAPI d3drm_mesh_Clone (IDirect3DRMMesh *iface, IUnknown *outer, REFIID iid, void **out)
 
static HRESULT WINAPI d3drm_mesh_AddDestroyCallback (IDirect3DRMMesh *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
 
static HRESULT WINAPI d3drm_mesh_DeleteDestroyCallback (IDirect3DRMMesh *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
 
static HRESULT WINAPI d3drm_mesh_SetAppData (IDirect3DRMMesh *iface, DWORD data)
 
static DWORD WINAPI d3drm_mesh_GetAppData (IDirect3DRMMesh *iface)
 
static HRESULT WINAPI d3drm_mesh_SetName (IDirect3DRMMesh *iface, const char *name)
 
static HRESULT WINAPI d3drm_mesh_GetName (IDirect3DRMMesh *iface, DWORD *size, char *name)
 
static HRESULT WINAPI d3drm_mesh_GetClassName (IDirect3DRMMesh *iface, DWORD *size, char *name)
 
static HRESULT WINAPI d3drm_mesh_Scale (IDirect3DRMMesh *iface, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz)
 
static HRESULT WINAPI d3drm_mesh_Translate (IDirect3DRMMesh *iface, D3DVALUE tx, D3DVALUE ty, D3DVALUE tz)
 
static HRESULT WINAPI d3drm_mesh_GetBox (IDirect3DRMMesh *iface, D3DRMBOX *box)
 
static HRESULT WINAPI d3drm_mesh_AddGroup (IDirect3DRMMesh *iface, unsigned vertex_count, unsigned face_count, unsigned vertex_per_face, unsigned *face_data, D3DRMGROUPINDEX *id)
 
static HRESULT WINAPI d3drm_mesh_SetVertices (IDirect3DRMMesh *iface, D3DRMGROUPINDEX group_id, unsigned int start_idx, unsigned int count, D3DRMVERTEX *values)
 
static HRESULT WINAPI d3drm_mesh_SetGroupColor (IDirect3DRMMesh *iface, D3DRMGROUPINDEX id, D3DCOLOR color)
 
static HRESULT WINAPI d3drm_mesh_SetGroupColorRGB (IDirect3DRMMesh *iface, D3DRMGROUPINDEX id, D3DVALUE red, D3DVALUE green, D3DVALUE blue)
 
static HRESULT WINAPI d3drm_mesh_SetGroupMapping (IDirect3DRMMesh *iface, D3DRMGROUPINDEX id, D3DRMMAPPING value)
 
static HRESULT WINAPI d3drm_mesh_SetGroupQuality (IDirect3DRMMesh *iface, D3DRMGROUPINDEX id, D3DRMRENDERQUALITY value)
 
static HRESULT WINAPI d3drm_mesh_SetGroupMaterial (IDirect3DRMMesh *iface, D3DRMGROUPINDEX id, IDirect3DRMMaterial *material)
 
static HRESULT WINAPI d3drm_mesh_SetGroupTexture (IDirect3DRMMesh *iface, D3DRMGROUPINDEX id, IDirect3DRMTexture *texture)
 
static UINT WINAPI d3drm_mesh_GetGroupCount (IDirect3DRMMesh *iface)
 
static HRESULT WINAPI d3drm_mesh_GetGroup (IDirect3DRMMesh *iface, D3DRMGROUPINDEX id, unsigned *vertex_count, unsigned *face_count, unsigned *vertex_per_face, DWORD *face_data_size, unsigned *face_data)
 
static HRESULT WINAPI d3drm_mesh_GetVertices (IDirect3DRMMesh *iface, D3DRMGROUPINDEX group_id, DWORD start_idx, DWORD count, D3DRMVERTEX *vertices)
 
static D3DCOLOR WINAPI d3drm_mesh_GetGroupColor (IDirect3DRMMesh *iface, D3DRMGROUPINDEX id)
 
static D3DRMMAPPING WINAPI d3drm_mesh_GetGroupMapping (IDirect3DRMMesh *iface, D3DRMGROUPINDEX id)
 
static D3DRMRENDERQUALITY WINAPI d3drm_mesh_GetGroupQuality (IDirect3DRMMesh *iface, D3DRMGROUPINDEX id)
 
static HRESULT WINAPI d3drm_mesh_GetGroupMaterial (IDirect3DRMMesh *iface, D3DRMGROUPINDEX id, IDirect3DRMMaterial **material)
 
static HRESULT WINAPI d3drm_mesh_GetGroupTexture (IDirect3DRMMesh *iface, D3DRMGROUPINDEX id, IDirect3DRMTexture **texture)
 
HRESULT d3drm_mesh_create (struct d3drm_mesh **mesh, IDirect3DRM *d3drm)
 
static HRESULT WINAPI d3drm_wrap_QueryInterface (IDirect3DRMWrap *iface, REFIID riid, void **out)
 
static ULONG WINAPI d3drm_wrap_AddRef (IDirect3DRMWrap *iface)
 
static ULONG WINAPI d3drm_wrap_Release (IDirect3DRMWrap *iface)
 
static HRESULT WINAPI d3drm_wrap_Clone (IDirect3DRMWrap *iface, IUnknown *outer, REFIID iid, void **out)
 
static HRESULT WINAPI d3drm_wrap_AddDestroyCallback (IDirect3DRMWrap *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
 
static HRESULT WINAPI d3drm_wrap_DeleteDestroyCallback (IDirect3DRMWrap *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
 
static HRESULT WINAPI d3drm_wrap_SetAppData (IDirect3DRMWrap *iface, DWORD data)
 
static DWORD WINAPI d3drm_wrap_GetAppData (IDirect3DRMWrap *iface)
 
static HRESULT WINAPI d3drm_wrap_SetName (IDirect3DRMWrap *iface, const char *name)
 
static HRESULT WINAPI d3drm_wrap_GetName (IDirect3DRMWrap *iface, DWORD *size, char *name)
 
static HRESULT WINAPI d3drm_wrap_GetClassName (IDirect3DRMWrap *iface, DWORD *size, char *name)
 
static HRESULT WINAPI d3drm_wrap_Init (IDirect3DRMWrap *iface, D3DRMWRAPTYPE type, IDirect3DRMFrame *reference, D3DVALUE ox, D3DVALUE oy, D3DVALUE oz, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz, D3DVALUE ou, D3DVALUE ov, D3DVALUE su, D3DVALUE sv)
 
static HRESULT WINAPI d3drm_wrap_Apply (IDirect3DRMWrap *iface, IDirect3DRMObject *object)
 
static HRESULT WINAPI d3drm_wrap_ApplyRelative (IDirect3DRMWrap *iface, IDirect3DRMFrame *frame, IDirect3DRMObject *object)
 
HRESULT d3drm_wrap_create (struct d3drm_wrap **wrap, IDirect3DRM *d3drm)
 

Variables

char templates []
 
static const struct IDirect3DRMMeshBuilder2Vtbl d3drm_mesh_builder2_vtbl
 
static const struct IDirect3DRMMeshBuilder3Vtbl d3drm_mesh_builder3_vtbl
 
static const struct IDirect3DRMMeshVtbl d3drm_mesh_vtbl
 
static const struct IDirect3DRMWrapVtbl d3drm_wrap_vtbl
 

Function Documentation

◆ clean_mesh_builder_data()

static void clean_mesh_builder_data ( struct d3drm_mesh_builder *  mesh_builder)
static

Definition at line 307 of file meshbuilder.c.

308{
309 DWORD i;
310
311 IDirect3DRMMeshBuilder3_SetName(&mesh_builder->IDirect3DRMMeshBuilder3_iface, NULL);
312 free(mesh_builder->vertices);
313 mesh_builder->vertices = NULL;
314 mesh_builder->nb_vertices = 0;
315 mesh_builder->vertices_size = 0;
316 free(mesh_builder->normals);
317 mesh_builder->normals = NULL;
318 mesh_builder->nb_normals = 0;
319 mesh_builder->normals_size = 0;
320 free(mesh_builder->pFaceData);
321 mesh_builder->pFaceData = NULL;
322 mesh_builder->face_data_size = 0;
323 mesh_builder->nb_faces = 0;
324 free(mesh_builder->pCoords2d);
325 mesh_builder->pCoords2d = NULL;
326 mesh_builder->nb_coords2d = 0;
327 for (i = 0; i < mesh_builder->nb_materials; i++)
328 {
329 if (mesh_builder->materials[i].material)
330 IDirect3DRMMaterial2_Release(mesh_builder->materials[i].material);
331 if (mesh_builder->materials[i].texture)
332 IDirect3DRMTexture3_Release(mesh_builder->materials[i].texture);
333 }
334 mesh_builder->nb_materials = 0;
335 free(mesh_builder->materials);
336 mesh_builder->materials = NULL;
337 free(mesh_builder->material_indices);
338 mesh_builder->material_indices = NULL;
339}
#define IDirect3DRMMeshBuilder3_SetName(p, a)
Definition: d3drmobj.h:2933
#define IDirect3DRMTexture3_Release(p)
Definition: d3drmobj.h:3476
#define IDirect3DRMMaterial2_Release(p)
Definition: d3drmobj.h:3732
#define free
Definition: debug_ros.c:5
#define NULL
Definition: types.h:112
unsigned long DWORD
Definition: ntddk_ex.h:95
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
Definition: glfuncs.h:248
IDirect3DRMMeshBuilder * mesh_builder
Definition: d3drm.c:3491

Referenced by d3drm_mesh_builder2_Release(), and d3drm_mesh_builder3_Load().

◆ d3drm_array_reserve()

BOOL d3drm_array_reserve ( void **  elements,
SIZE_T *  capacity,
SIZE_T  element_count,
SIZE_T  element_size 
)

Definition at line 260 of file meshbuilder.c.

261{
262 SIZE_T new_capacity, max_capacity;
263 void *new_elements;
264
265 if (element_count <= *capacity)
266 return TRUE;
267
268 max_capacity = ~(SIZE_T)0 / element_size;
269 if (max_capacity < element_count)
270 return FALSE;
271
272 new_capacity = max(*capacity, 4);
273 while (new_capacity < element_count && new_capacity <= max_capacity / 2)
274 new_capacity *= 2;
275
276 if (new_capacity < element_count)
277 new_capacity = max_capacity;
278
279 if (!(new_elements = realloc(*elements, new_capacity * element_size)))
280 return FALSE;
281
282 *elements = new_elements;
283 *capacity = new_capacity;
284 return TRUE;
285}
size_t const element_size
Definition: debug_heap.cpp:510
#define realloc
Definition: debug_ros.c:6
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
static ULONG ** element_count
Definition: exception.c:124
#define max(a, b)
Definition: svc.c:63
ULONG_PTR SIZE_T
Definition: typedefs.h:80

Referenced by d3drm_animation2_AddKey(), d3drm_frame3_AddChild(), d3drm_frame3_AddLight(), d3drm_frame3_AddVisual(), d3drm_mesh_AddGroup(), d3drm_mesh_builder3_AddNormal(), d3drm_mesh_builder3_AddVertex(), and load_mesh_data().

◆ d3drm_mesh_AddDestroyCallback()

static HRESULT WINAPI d3drm_mesh_AddDestroyCallback ( IDirect3DRMMesh *  iface,
D3DRMOBJECTCALLBACK  cb,
void *  ctx 
)
static

Definition at line 2427 of file meshbuilder.c.

2429{
2430 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2431
2432 TRACE("iface %p, cb %p, ctx %p.\n", iface, cb, ctx);
2433
2435}
HRESULT d3drm_object_add_destroy_callback(struct d3drm_object *object, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: d3drm_main.c:57
static MonoProfilerRuntimeShutdownBeginCallback cb
Definition: metahost.c:118
static struct d3drm_mesh * impl_from_IDirect3DRMMesh(IDirect3DRMMesh *iface)
Definition: meshbuilder.c:287
#define TRACE(s)
Definition: solgame.cpp:4
Definition: mesh.c:189

◆ d3drm_mesh_AddGroup()

static HRESULT WINAPI d3drm_mesh_AddGroup ( IDirect3DRMMesh *  iface,
unsigned  vertex_count,
unsigned  face_count,
unsigned  vertex_per_face,
unsigned *  face_data,
D3DRMGROUPINDEX *  id 
)
static

Definition at line 2517 of file meshbuilder.c.

2519{
2520 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2521 struct mesh_group *group;
2522
2523 TRACE("iface %p, vertex_count %u, face_count %u, vertex_per_face %u, face_data %p, id %p.\n",
2525
2526 if (!face_data || !id)
2527 return E_POINTER;
2528
2529 if (!d3drm_array_reserve((void **)&mesh->groups, &mesh->groups_size, mesh->nb_groups + 1, sizeof(*mesh->groups)))
2530 return E_OUTOFMEMORY;
2531
2532 group = mesh->groups + mesh->nb_groups;
2533
2534 if (!(group->vertices = calloc(vertex_count, sizeof(*group->vertices))))
2535 return E_OUTOFMEMORY;
2536 group->nb_vertices = vertex_count;
2537 group->nb_faces = face_count;
2538 group->vertex_per_face = vertex_per_face;
2539
2540 if (vertex_per_face)
2541 {
2542 group->face_data_size = face_count * vertex_per_face;
2543 }
2544 else
2545 {
2546 unsigned i;
2547 unsigned nb_indices;
2548 unsigned* face_data_ptr = face_data;
2549 group->face_data_size = 0;
2550
2551 for (i = 0; i < face_count; i++)
2552 {
2553 nb_indices = *face_data_ptr;
2554 group->face_data_size += nb_indices + 1;
2555 face_data_ptr += nb_indices;
2556 }
2557 }
2558
2559 if (!(group->face_data = calloc(group->face_data_size, sizeof(*group->face_data))))
2560 {
2561 free(group->vertices);
2562 return E_OUTOFMEMORY;
2563 }
2564 memcpy(group->face_data, face_data, group->face_data_size * sizeof(*face_data));
2565
2566 group->material = NULL;
2567 group->texture = NULL;
2568
2569 *id = mesh->nb_groups++;
2570
2571 return D3DRM_OK;
2572}
#define D3DRM_OK
Definition: d3drm.h:486
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
GLboolean GLuint group
Definition: glext.h:11120
BOOL d3drm_array_reserve(void **elements, SIZE_T *capacity, SIZE_T element_count, SIZE_T element_size)
Definition: meshbuilder.c:260
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
int face_count
Definition: d3drm.c:3529
int vertex_per_face
Definition: d3drm.c:3530
int vertex_count
Definition: d3drm.c:3528
#define calloc
Definition: rosglue.h:14
unsigned * face_data
#define E_POINTER
Definition: winerror.h:3480

◆ d3drm_mesh_AddRef()

static ULONG WINAPI d3drm_mesh_AddRef ( IDirect3DRMMesh *  iface)
static

Definition at line 2380 of file meshbuilder.c.

2381{
2382 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2383 ULONG refcount = InterlockedIncrement(&mesh->ref);
2384
2385 TRACE("%p increasing refcount to %lu.\n", iface, refcount);
2386
2387 return refcount;
2388}
#define InterlockedIncrement
Definition: armddk.h:53
uint32_t ULONG
Definition: typedefs.h:59

◆ d3drm_mesh_builder2_AddDestroyCallback()

static HRESULT WINAPI d3drm_mesh_builder2_AddDestroyCallback ( IDirect3DRMMeshBuilder2 *  iface,
D3DRMOBJECTCALLBACK  cb,
void *  ctx 
)
static

Definition at line 410 of file meshbuilder.c.

412{
414
415 TRACE("iface %p, cb %p, ctx %p.\n", iface, cb, ctx);
416
417 return IDirect3DRMMeshBuilder3_AddDestroyCallback(&mesh_builder->IDirect3DRMMeshBuilder3_iface, cb, ctx);
418}
#define IDirect3DRMMeshBuilder3_AddDestroyCallback(p, a, b)
Definition: d3drmobj.h:2929
static struct d3drm_mesh_builder * impl_from_IDirect3DRMMeshBuilder2(IDirect3DRMMeshBuilder2 *iface)
Definition: meshbuilder.c:292

◆ d3drm_mesh_builder2_AddFace()

static HRESULT WINAPI d3drm_mesh_builder2_AddFace ( IDirect3DRMMeshBuilder2 *  iface,
IDirect3DRMFace *  face 
)
static

Definition at line 587 of file meshbuilder.c.

588{
589 FIXME("iface %p, face %p stub!\n", iface, face);
590
591 return E_NOTIMPL;
592}
#define FIXME(fmt,...)
Definition: precomp.h:53
#define E_NOTIMPL
Definition: ddrawi.h:99
GLenum GLuint GLint GLenum face
Definition: glext.h:7025

◆ d3drm_mesh_builder2_AddFaces()

static HRESULT WINAPI d3drm_mesh_builder2_AddFaces ( IDirect3DRMMeshBuilder2 *  iface,
DWORD  vertex_count,
D3DVECTOR *  vertices,
DWORD  normal_count,
D3DVECTOR *  normals,
DWORD *  face_data,
IDirect3DRMFaceArray **  array 
)
static

Definition at line 594 of file meshbuilder.c.

597{
598 FIXME("iface %p, vertex_count %lu, vertices %p, normal_count %lu, normals %p, face_data %p, array %p stub!\n",
599 iface, vertex_count, vertices, normal_count, normals, face_data, array);
600
601 return E_NOTIMPL;
602}
Definition: undname.c:54

◆ d3drm_mesh_builder2_AddFrame()

static HRESULT WINAPI d3drm_mesh_builder2_AddFrame ( IDirect3DRMMeshBuilder2 *  iface,
IDirect3DRMFrame *  frame 
)
static

Definition at line 580 of file meshbuilder.c.

581{
582 FIXME("iface %p, frame %p stub!\n", iface, frame);
583
584 return E_NOTIMPL;
585}

◆ d3drm_mesh_builder2_AddMesh()

static HRESULT WINAPI d3drm_mesh_builder2_AddMesh ( IDirect3DRMMeshBuilder2 *  iface,
IDirect3DRMMesh *  mesh 
)
static

Definition at line 565 of file meshbuilder.c.

566{
567 FIXME("iface %p, mesh %p stub!\n", iface, mesh);
568
569 return E_NOTIMPL;
570}

◆ d3drm_mesh_builder2_AddMeshBuilder()

static HRESULT WINAPI d3drm_mesh_builder2_AddMeshBuilder ( IDirect3DRMMeshBuilder2 *  iface,
IDirect3DRMMeshBuilder *  mesh_builder 
)
static

Definition at line 572 of file meshbuilder.c.

574{
575 FIXME("iface %p, mesh_builder %p stub!\n", iface, mesh_builder);
576
577 return E_NOTIMPL;
578}

◆ d3drm_mesh_builder2_AddNormal()

static int WINAPI d3drm_mesh_builder2_AddNormal ( IDirect3DRMMeshBuilder2 *  iface,
D3DVALUE  x,
D3DVALUE  y,
D3DVALUE  z 
)
static

Definition at line 792 of file meshbuilder.c.

794{
796
797 TRACE("iface %p, x %.8e, y %.8e, z %.8e.\n", iface, x, y, z);
798
799 return IDirect3DRMMeshBuilder3_AddNormal(&mesh_builder->IDirect3DRMMeshBuilder3_iface, x, y, z);
800}
#define IDirect3DRMMeshBuilder3_AddNormal(p, a, b, c)
Definition: d3drmobj.h:2968
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLdouble GLdouble z
Definition: glext.h:5874

◆ d3drm_mesh_builder2_AddRef()

static ULONG WINAPI d3drm_mesh_builder2_AddRef ( IDirect3DRMMeshBuilder2 *  iface)
static

Definition at line 370 of file meshbuilder.c.

371{
373 ULONG refcount = InterlockedIncrement(&mesh_builder->ref);
374
375 TRACE("%p increasing refcount to %lu.\n", mesh_builder, refcount);
376
377 return refcount;
378}

Referenced by d3drm_mesh_builder3_AddRef().

◆ d3drm_mesh_builder2_AddVertex()

static int WINAPI d3drm_mesh_builder2_AddVertex ( IDirect3DRMMeshBuilder2 *  iface,
D3DVALUE  x,
D3DVALUE  y,
D3DVALUE  z 
)
static

Definition at line 782 of file meshbuilder.c.

784{
786
787 TRACE("iface %p, x %.8e, y %.8e, z %.8e.\n", iface, x, y, z);
788
789 return IDirect3DRMMeshBuilder3_AddVertex(&mesh_builder->IDirect3DRMMeshBuilder3_iface, x, y, z);
790}
#define IDirect3DRMMeshBuilder3_AddVertex(p, a, b, c)
Definition: d3drmobj.h:2967

◆ d3drm_mesh_builder2_Clone()

static HRESULT WINAPI d3drm_mesh_builder2_Clone ( IDirect3DRMMeshBuilder2 *  iface,
IUnknown *  outer,
REFIID  iid,
void **  out 
)
static

Definition at line 402 of file meshbuilder.c.

404{
405 FIXME("iface %p, outer %p, iid %s, out %p stub!\n", iface, outer, debugstr_guid(iid), out);
406
407 return E_NOTIMPL;
408}
#define debugstr_guid
Definition: kernel32.h:35
static IUnknown * outer
Definition: compobj.c:82
wchar_t tm const _CrtWcstime_Writes_and_advances_ptr_ count wchar_t ** out
Definition: wcsftime.cpp:383

◆ d3drm_mesh_builder2_CreateFace()

static HRESULT WINAPI d3drm_mesh_builder2_CreateFace ( IDirect3DRMMeshBuilder2 *  iface,
IDirect3DRMFace **  face 
)
static

Definition at line 802 of file meshbuilder.c.

803{
804 struct d3drm_face *object;
805 HRESULT hr;
806
807 TRACE("iface %p, face %p.\n", iface, face);
808
809 if (FAILED(hr = d3drm_face_create(&object)))
810 return hr;
811
812 *face = &object->IDirect3DRMFace_iface;
813
814 return S_OK;
815}
HRESULT d3drm_face_create(struct d3drm_face **face)
Definition: face.c:620
HRESULT hr
Definition: delayimp.cpp:582
#define S_OK
Definition: intsafe.h:52
#define FAILED(hr)
Definition: intsafe.h:51

◆ d3drm_mesh_builder2_CreateMesh()

static HRESULT WINAPI d3drm_mesh_builder2_CreateMesh ( IDirect3DRMMeshBuilder2 *  iface,
IDirect3DRMMesh **  mesh 
)
static

Definition at line 858 of file meshbuilder.c.

859{
861
862 TRACE("iface %p, mesh %p.\n", iface, mesh);
863
864 return IDirect3DRMMeshBuilder3_CreateMesh(&mesh_builder->IDirect3DRMMeshBuilder3_iface, mesh);
865}
#define IDirect3DRMMeshBuilder3_CreateMesh(p, a)
Definition: d3drmobj.h:2977

◆ d3drm_mesh_builder2_DeleteDestroyCallback()

static HRESULT WINAPI d3drm_mesh_builder2_DeleteDestroyCallback ( IDirect3DRMMeshBuilder2 *  iface,
D3DRMOBJECTCALLBACK  cb,
void *  ctx 
)
static

Definition at line 420 of file meshbuilder.c.

422{
424
425 TRACE("iface %p, cb %p, ctx %p.\n", iface, cb, ctx);
426
427 return IDirect3DRMMeshBuilder3_DeleteDestroyCallback(&mesh_builder->IDirect3DRMMeshBuilder3_iface, cb, ctx);
428}
#define IDirect3DRMMeshBuilder3_DeleteDestroyCallback(p, a, b)
Definition: d3drmobj.h:2930

◆ d3drm_mesh_builder2_GenerateNormals()

static HRESULT WINAPI d3drm_mesh_builder2_GenerateNormals ( IDirect3DRMMeshBuilder2 *  iface)
static

Definition at line 551 of file meshbuilder.c.

552{
553 FIXME("iface %p stub!\n", iface);
554
555 return E_NOTIMPL;
556}

◆ d3drm_mesh_builder2_GenerateNormals2()

static HRESULT WINAPI d3drm_mesh_builder2_GenerateNormals2 ( IDirect3DRMMeshBuilder2 *  iface,
D3DVALUE  crease,
DWORD  flags 
)
static

Definition at line 867 of file meshbuilder.c.

869{
870 FIXME("iface %p, crease %.8e, flags %#lx stub!\n", iface, crease, flags);
871
872 return E_NOTIMPL;
873}
GLbitfield flags
Definition: glext.h:7161

◆ d3drm_mesh_builder2_GetAppData()

static DWORD WINAPI d3drm_mesh_builder2_GetAppData ( IDirect3DRMMeshBuilder2 *  iface)
static

Definition at line 459 of file meshbuilder.c.

460{
462
463 TRACE("iface %p.\n", iface);
464
465 return d3drm_mesh_builder3_GetAppData(&mesh_builder->IDirect3DRMMeshBuilder3_iface);
466}
static DWORD WINAPI d3drm_mesh_builder3_GetAppData(IDirect3DRMMeshBuilder3 *iface)
Definition: meshbuilder.c:450

◆ d3drm_mesh_builder2_GetBox()

static HRESULT WINAPI d3drm_mesh_builder2_GetBox ( IDirect3DRMMeshBuilder2 *  iface,
D3DRMBOX *  box 
)
static

Definition at line 544 of file meshbuilder.c.

545{
546 FIXME("iface %p, box %p stub!\n", iface, box);
547
548 return E_NOTIMPL;
549}
Definition: palette.c:466

◆ d3drm_mesh_builder2_GetClassName()

static HRESULT WINAPI d3drm_mesh_builder2_GetClassName ( IDirect3DRMMeshBuilder2 *  iface,
DWORD *  size,
char *  name 
)
static

Definition at line 486 of file meshbuilder.c.

487{
489
490 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
491
492 return IDirect3DRMMeshBuilder3_GetClassName(&mesh_builder->IDirect3DRMMeshBuilder3_iface, size, name);
493}
#define IDirect3DRMMeshBuilder3_GetClassName(p, a, b)
Definition: d3drmobj.h:2935
GLsizeiptr size
Definition: glext.h:5919
Definition: name.c:39

◆ d3drm_mesh_builder2_GetColorSource()

static D3DRMCOLORSOURCE WINAPI d3drm_mesh_builder2_GetColorSource ( IDirect3DRMMeshBuilder2 *  iface)
static

Definition at line 558 of file meshbuilder.c.

559{
560 FIXME("iface %p stub!\n", iface);
561
562 return E_NOTIMPL;
563}

◆ d3drm_mesh_builder2_GetFace()

static HRESULT WINAPI d3drm_mesh_builder2_GetFace ( IDirect3DRMMeshBuilder2 *  iface,
DWORD  index,
IDirect3DRMFace **  face 
)
static

Definition at line 875 of file meshbuilder.c.

877{
878 FIXME("iface %p, index %lu, face %p stub!\n", iface, index, face);
879
880 return E_NOTIMPL;
881}
GLuint index
Definition: glext.h:6031

◆ d3drm_mesh_builder2_GetFaceCount()

static int WINAPI d3drm_mesh_builder2_GetFaceCount ( IDirect3DRMMeshBuilder2 *  iface)
static

Definition at line 833 of file meshbuilder.c.

834{
836
837 TRACE("iface %p.\n", iface);
838
839 return mesh_builder->nb_faces;
840}

◆ d3drm_mesh_builder2_GetFaces()

static HRESULT WINAPI d3drm_mesh_builder2_GetFaces ( IDirect3DRMMeshBuilder2 *  iface,
IDirect3DRMFaceArray **  array 
)
static

Definition at line 730 of file meshbuilder.c.

732{
733 FIXME("iface %p, array %p stub!\n", iface, array);
734
735 return E_NOTIMPL;
736}

◆ d3drm_mesh_builder2_GetName()

static HRESULT WINAPI d3drm_mesh_builder2_GetName ( IDirect3DRMMeshBuilder2 *  iface,
DWORD *  size,
char *  name 
)
static

Definition at line 477 of file meshbuilder.c.

478{
480
481 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
482
483 return IDirect3DRMMeshBuilder3_GetName(&mesh_builder->IDirect3DRMMeshBuilder3_iface, size, name);
484}
#define IDirect3DRMMeshBuilder3_GetName(p, a, b)
Definition: d3drmobj.h:2934

◆ d3drm_mesh_builder2_GetPerspective()

static BOOL WINAPI d3drm_mesh_builder2_GetPerspective ( IDirect3DRMMeshBuilder2 *  iface)
static

Definition at line 826 of file meshbuilder.c.

827{
828 FIXME("iface %p stub!\n", iface);
829
830 return FALSE;
831}

◆ d3drm_mesh_builder2_GetQuality()

static D3DRMRENDERQUALITY WINAPI d3drm_mesh_builder2_GetQuality ( IDirect3DRMMeshBuilder2 *  iface)
static

Definition at line 817 of file meshbuilder.c.

818{
820
821 TRACE("iface %p\n", iface);
822
823 return mesh_builder->quality;
824}

◆ d3drm_mesh_builder2_GetTextureCoordinates()

static HRESULT WINAPI d3drm_mesh_builder2_GetTextureCoordinates ( IDirect3DRMMeshBuilder2 *  iface,
DWORD  index,
D3DVALUE *  u,
D3DVALUE *  v 
)
static

Definition at line 771 of file meshbuilder.c.

773{
775
776 TRACE("iface %p, index %lu, u %p, v %p.\n", iface, index, u, v);
777
778 return IDirect3DRMMeshBuilder3_GetTextureCoordinates(&mesh_builder->IDirect3DRMMeshBuilder3_iface,
779 index, u, v);
780}
#define IDirect3DRMMeshBuilder3_GetTextureCoordinates(p, a, b, c)
Definition: d3drmobj.h:2966
const GLdouble * v
Definition: gl.h:2040
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 * u
Definition: glfuncs.h:240

◆ d3drm_mesh_builder2_GetVertexColor()

static D3DCOLOR WINAPI d3drm_mesh_builder2_GetVertexColor ( IDirect3DRMMeshBuilder2 *  iface,
DWORD  index 
)
static

Definition at line 851 of file meshbuilder.c.

852{
853 FIXME("iface %p, index %lu stub!\n", iface, index);
854
855 return 0;
856}

◆ d3drm_mesh_builder2_GetVertexCount()

static int WINAPI d3drm_mesh_builder2_GetVertexCount ( IDirect3DRMMeshBuilder2 *  iface)
static

Definition at line 842 of file meshbuilder.c.

843{
845
846 TRACE("iface %p.\n", iface);
847
848 return mesh_builder->nb_vertices;
849}

◆ d3drm_mesh_builder2_GetVertices()

static HRESULT WINAPI d3drm_mesh_builder2_GetVertices ( IDirect3DRMMeshBuilder2 *  iface,
DWORD *  vertex_count,
D3DVECTOR *  vertices,
DWORD *  normal_count,
D3DVECTOR *  normals,
DWORD *  face_data_size,
DWORD *  face_data 
)
static

Definition at line 738 of file meshbuilder.c.

741{
743
744 TRACE("iface %p, vertex_count %p, vertices %p, normal_count %p, normals %p, face_data_size %p, face_data %p.\n",
745 iface, vertex_count, vertices, normal_count, normals, face_data_size, face_data);
746
747 if (vertices && (!vertex_count || (*vertex_count < mesh_builder->nb_vertices)))
748 return D3DRMERR_BADVALUE;
749 if (vertex_count)
750 *vertex_count = mesh_builder->nb_vertices;
751 if (vertices && mesh_builder->nb_vertices)
752 memcpy(vertices, mesh_builder->vertices, mesh_builder->nb_vertices * sizeof(*vertices));
753
754 if (normals && (!normal_count || (*normal_count < mesh_builder->nb_normals)))
755 return D3DRMERR_BADVALUE;
756 if (normal_count)
757 *normal_count = mesh_builder->nb_normals;
758 if (normals && mesh_builder->nb_normals)
759 memcpy(normals, mesh_builder->normals, mesh_builder->nb_normals * sizeof(*normals));
760
761 if (face_data && (!face_data_size || (*face_data_size < mesh_builder->face_data_size)))
762 return D3DRMERR_BADVALUE;
763 if (face_data_size)
764 *face_data_size = mesh_builder->face_data_size;
765 if (face_data && mesh_builder->face_data_size)
766 memcpy(face_data, mesh_builder->pFaceData, mesh_builder->face_data_size * sizeof(*face_data));
767
768 return D3DRM_OK;
769}
#define D3DRMERR_BADVALUE
Definition: d3drm.h:496
int face_data_size
Definition: d3drm.c:3531
D3DVECTOR * vertices
D3DVECTOR * normals

◆ d3drm_mesh_builder2_Load()

static HRESULT WINAPI d3drm_mesh_builder2_Load ( IDirect3DRMMeshBuilder2 *  iface,
void *  filename,
void *  name,
D3DRMLOADOPTIONS  flags,
D3DRMLOADTEXTURECALLBACK  cb,
void *  ctx 
)
static

Definition at line 495 of file meshbuilder.c.

497{
499
500 TRACE("iface %p, filename %p, name %p, flags %#lx, cb %p, ctx %p.\n",
501 iface, filename, name, flags, cb, ctx);
502
503 if (cb)
504 FIXME("Texture callback is not yet supported\n");
505
506 return IDirect3DRMMeshBuilder3_Load(&mesh_builder->IDirect3DRMMeshBuilder3_iface,
508}
#define IDirect3DRMMeshBuilder3_Load(p, a, b, c, d, e)
Definition: d3drmobj.h:2938
const char * filename
Definition: ioapi.h:137

◆ d3drm_mesh_builder2_QueryInterface()

static HRESULT WINAPI d3drm_mesh_builder2_QueryInterface ( IDirect3DRMMeshBuilder2 *  iface,
REFIID  riid,
void **  out 
)
static

Definition at line 341 of file meshbuilder.c.

342{
344
345 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
346
347 if (IsEqualGUID(riid, &IID_IDirect3DRMMeshBuilder2)
348 || IsEqualGUID(riid, &IID_IDirect3DRMMeshBuilder)
349 || IsEqualGUID(riid, &IID_IDirect3DRMVisual)
350 || IsEqualGUID(riid, &IID_IDirect3DRMObject)
352 {
353 *out = &mesh_builder->IDirect3DRMMeshBuilder2_iface;
354 }
355 else if (IsEqualGUID(riid, &IID_IDirect3DRMMeshBuilder3))
356 {
357 *out = &mesh_builder->IDirect3DRMMeshBuilder3_iface;
358 }
359 else
360 {
361 *out = NULL;
362 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
363 return E_NOINTERFACE;
364 }
365
366 IUnknown_AddRef((IUnknown *)*out);
367 return S_OK;
368}
#define WARN(fmt,...)
Definition: precomp.h:61
const GUID IID_IUnknown
REFIID riid
Definition: atlbase.h:39
#define IsEqualGUID(rguid1, rguid2)
Definition: guiddef.h:147
#define E_NOINTERFACE
Definition: winerror.h:3479

Referenced by d3drm_mesh_builder3_QueryInterface().

◆ d3drm_mesh_builder2_Release()

static ULONG WINAPI d3drm_mesh_builder2_Release ( IDirect3DRMMeshBuilder2 *  iface)
static

Definition at line 380 of file meshbuilder.c.

381{
383 ULONG refcount = InterlockedDecrement(&mesh_builder->ref);
384
385 TRACE("%p decreasing refcount to %lu.\n", mesh_builder, refcount);
386
387 if (!refcount)
388 {
389 d3drm_object_cleanup((IDirect3DRMObject *)iface, &mesh_builder->obj);
391 if (mesh_builder->material)
393 if (mesh_builder->texture)
397 }
398
399 return refcount;
400}
#define InterlockedDecrement
Definition: armddk.h:52
#define IDirect3DRM_Release(p)
Definition: d3drm.h:111
void d3drm_object_cleanup(IDirect3DRMObject *iface, struct d3drm_object *object)
Definition: d3drm_main.c:155
static void clean_mesh_builder_data(struct d3drm_mesh_builder *mesh_builder)
Definition: meshbuilder.c:307

Referenced by d3drm_mesh_builder3_Release().

◆ d3drm_mesh_builder2_ReserveSpace()

static HRESULT WINAPI d3drm_mesh_builder2_ReserveSpace ( IDirect3DRMMeshBuilder2 *  iface,
DWORD  vertex_count,
DWORD  normal_count,
DWORD  face_count 
)
static

Definition at line 604 of file meshbuilder.c.

606{
607 FIXME("iface %p, vertex_count %lu, normal_count %lu, face_count %lu stub!\n",
608 iface, vertex_count, normal_count, face_count);
609
610 return E_NOTIMPL;
611}

◆ d3drm_mesh_builder2_Save()

static HRESULT WINAPI d3drm_mesh_builder2_Save ( IDirect3DRMMeshBuilder2 *  iface,
const char *  filename,
D3DRMXOFFORMAT  format,
D3DRMSAVEOPTIONS  flags 
)
static

Definition at line 510 of file meshbuilder.c.

512{
513 FIXME("iface %p, filename %s, format %#x, flags %#lx stub!\n",
514 iface, debugstr_a(filename), format, flags);
515
516 return E_NOTIMPL;
517}
#define debugstr_a
Definition: kernel32.h:31

◆ d3drm_mesh_builder2_Scale()

static HRESULT WINAPI d3drm_mesh_builder2_Scale ( IDirect3DRMMeshBuilder2 *  iface,
D3DVALUE  sx,
D3DVALUE  sy,
D3DVALUE  sz 
)
static

Definition at line 519 of file meshbuilder.c.

521{
523
524 TRACE("iface %p, sx %.8e, sy %.8e, sz %.8e.\n", iface, sx, sy, sz);
525
526 return IDirect3DRMMeshBuilder3_Scale(&mesh_builder->IDirect3DRMMeshBuilder3_iface, sx, sy, sz);
527}
#define IDirect3DRMMeshBuilder3_Scale(p, a, b, c)
Definition: d3drmobj.h:2940

◆ d3drm_mesh_builder2_SetAppData()

static HRESULT WINAPI d3drm_mesh_builder2_SetAppData ( IDirect3DRMMeshBuilder2 *  iface,
DWORD  data 
)
static

Definition at line 441 of file meshbuilder.c.

442{
444
445 TRACE("iface %p, data %#lx.\n", iface, data);
446
447 return d3drm_mesh_builder3_SetAppData(&mesh_builder->IDirect3DRMMeshBuilder3_iface, data);
448}
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
static HRESULT WINAPI d3drm_mesh_builder3_SetAppData(IDirect3DRMMeshBuilder3 *iface, DWORD data)
Definition: meshbuilder.c:430

◆ d3drm_mesh_builder2_SetColor()

static HRESULT WINAPI d3drm_mesh_builder2_SetColor ( IDirect3DRMMeshBuilder2 *  iface,
D3DCOLOR  color 
)
static

Definition at line 623 of file meshbuilder.c.

624{
626
627 TRACE("iface %p, color 0x%08lx.\n", iface, color);
628
629 return IDirect3DRMMeshBuilder3_SetColor(&mesh_builder->IDirect3DRMMeshBuilder3_iface, color);
630}
#define IDirect3DRMMeshBuilder3_SetColor(p, a)
Definition: d3drmobj.h:2953
GLuint color
Definition: glext.h:6243

◆ d3drm_mesh_builder2_SetColorRGB()

static HRESULT WINAPI d3drm_mesh_builder2_SetColorRGB ( IDirect3DRMMeshBuilder2 *  iface,
D3DVALUE  red,
D3DVALUE  green,
D3DVALUE  blue 
)
static

Definition at line 613 of file meshbuilder.c.

615{
617
618 TRACE("iface %p, red %.8e, green %.8e, blue %.8e.\n", iface, red, green, blue);
619
620 return IDirect3DRMMeshBuilder3_SetColorRGB(&mesh_builder->IDirect3DRMMeshBuilder3_iface, red, green, blue);
621}
#define IDirect3DRMMeshBuilder3_SetColorRGB(p, a, b, c)
Definition: d3drmobj.h:2952
GLclampf green
Definition: gl.h:1740
GLclampf GLclampf blue
Definition: gl.h:1740
#define red
Definition: linetest.c:67

◆ d3drm_mesh_builder2_SetColorSource()

static HRESULT WINAPI d3drm_mesh_builder2_SetColorSource ( IDirect3DRMMeshBuilder2 *  iface,
D3DRMCOLORSOURCE  source 
)
static

Definition at line 537 of file meshbuilder.c.

538{
539 FIXME("iface %p, source %#x stub!\n", iface, source);
540
541 return E_NOTIMPL;
542}

◆ d3drm_mesh_builder2_SetMaterial()

static HRESULT WINAPI d3drm_mesh_builder2_SetMaterial ( IDirect3DRMMeshBuilder2 *  iface,
IDirect3DRMMaterial *  material 
)
static

Definition at line 651 of file meshbuilder.c.

653{
655
656 TRACE("iface %p, material %p.\n", iface, material);
657
658 return IDirect3DRMMeshBuilder3_SetMaterial(&mesh_builder->IDirect3DRMMeshBuilder3_iface,
659 (IDirect3DRMMaterial2 *)material);
660}
#define IDirect3DRMMeshBuilder3_SetMaterial(p, a)
Definition: d3drmobj.h:2955
IDirect3DRMMaterial2 * material

◆ d3drm_mesh_builder2_SetName()

static HRESULT WINAPI d3drm_mesh_builder2_SetName ( IDirect3DRMMeshBuilder2 *  iface,
const char *  name 
)
static

Definition at line 468 of file meshbuilder.c.

469{
471
472 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
473
474 return IDirect3DRMMeshBuilder3_SetName(&mesh_builder->IDirect3DRMMeshBuilder3_iface, name);
475}

◆ d3drm_mesh_builder2_SetNormal()

static HRESULT WINAPI d3drm_mesh_builder2_SetNormal ( IDirect3DRMMeshBuilder2 *  iface,
DWORD  index,
D3DVALUE  x,
D3DVALUE  y,
D3DVALUE  z 
)
static

Definition at line 694 of file meshbuilder.c.

696{
697 FIXME("iface %p, index %lu, x %.8e, y %.8e, z %.8e stub!\n", iface, index, x, y, z);
698
699 return E_NOTIMPL;
700}

◆ d3drm_mesh_builder2_SetPerspective()

static HRESULT WINAPI d3drm_mesh_builder2_SetPerspective ( IDirect3DRMMeshBuilder2 *  iface,
BOOL  enable 
)
static

Definition at line 679 of file meshbuilder.c.

680{
681 FIXME("iface %p, enable %#x stub!\n", iface, enable);
682
683 return E_NOTIMPL;
684}
GLboolean enable
Definition: glext.h:11120

◆ d3drm_mesh_builder2_SetQuality()

static HRESULT WINAPI d3drm_mesh_builder2_SetQuality ( IDirect3DRMMeshBuilder2 *  iface,
D3DRMRENDERQUALITY  quality 
)
static

Definition at line 670 of file meshbuilder.c.

672{
674 TRACE("iface %p, quality %#lx\n", iface, quality);
675
676 return IDirect3DRMMeshBuilder3_SetQuality(&mesh_builder->IDirect3DRMMeshBuilder3_iface, quality);
677}
#define IDirect3DRMMeshBuilder3_SetQuality(p, a)
Definition: d3drmobj.h:2957
int quality
Definition: jpeglib.h:994

◆ d3drm_mesh_builder2_SetTexture()

static HRESULT WINAPI d3drm_mesh_builder2_SetTexture ( IDirect3DRMMeshBuilder2 *  iface,
IDirect3DRMTexture *  texture 
)
static

Definition at line 632 of file meshbuilder.c.

634{
636 IDirect3DRMTexture3 *texture3 = NULL;
638
639 TRACE("iface %p, texture %p.\n", iface, texture);
640
641 if (texture)
642 hr = IDirect3DRMTexture_QueryInterface(texture, &IID_IDirect3DRMTexture3, (void **)&texture3);
643 if (SUCCEEDED(hr))
644 hr = IDirect3DRMMeshBuilder3_SetTexture(&mesh_builder->IDirect3DRMMeshBuilder3_iface, texture3);
645 if (texture3)
647
648 return hr;
649}
#define IDirect3DRMTexture_QueryInterface(p, a, b)
Definition: d3drmobj.h:3230
#define IDirect3DRMMeshBuilder3_SetTexture(p, a)
Definition: d3drmobj.h:2954
GLenum GLuint texture
Definition: glext.h:6295
#define SUCCEEDED(hr)
Definition: intsafe.h:50

◆ d3drm_mesh_builder2_SetTextureCoordinates()

static HRESULT WINAPI d3drm_mesh_builder2_SetTextureCoordinates ( IDirect3DRMMeshBuilder2 *  iface,
DWORD  index,
D3DVALUE  u,
D3DVALUE  v 
)
static

Definition at line 702 of file meshbuilder.c.

704{
706
707 TRACE("iface %p, index %lu, u %.8e, v %.8e.\n", iface, index, u, v);
708
709 return IDirect3DRMMeshBuilder3_SetTextureCoordinates(&mesh_builder->IDirect3DRMMeshBuilder3_iface,
710 index, u, v);
711}
#define IDirect3DRMMeshBuilder3_SetTextureCoordinates(p, a, b, c)
Definition: d3drmobj.h:2961

◆ d3drm_mesh_builder2_SetTextureTopology()

static HRESULT WINAPI d3drm_mesh_builder2_SetTextureTopology ( IDirect3DRMMeshBuilder2 *  iface,
BOOL  wrap_u,
BOOL  wrap_v 
)
static

Definition at line 662 of file meshbuilder.c.

664{
665 FIXME("iface %p, wrap_u %#x, wrap_v %#x stub!\n", iface, wrap_u, wrap_v);
666
667 return E_NOTIMPL;
668}

◆ d3drm_mesh_builder2_SetVertex()

static HRESULT WINAPI d3drm_mesh_builder2_SetVertex ( IDirect3DRMMeshBuilder2 *  iface,
DWORD  index,
D3DVALUE  x,
D3DVALUE  y,
D3DVALUE  z 
)
static

Definition at line 686 of file meshbuilder.c.

688{
689 FIXME("iface %p, index %lu, x %.8e, y %.8e, z %.8e stub!\n", iface, index, x, y, z);
690
691 return E_NOTIMPL;
692}

◆ d3drm_mesh_builder2_SetVertexColor()

static HRESULT WINAPI d3drm_mesh_builder2_SetVertexColor ( IDirect3DRMMeshBuilder2 *  iface,
DWORD  index,
D3DCOLOR  color 
)
static

Definition at line 713 of file meshbuilder.c.

715{
716 FIXME("iface %p, index %lu, color 0x%08lx stub!\n", iface, index, color);
717
718 return E_NOTIMPL;
719}

◆ d3drm_mesh_builder2_SetVertexColorRGB()

static HRESULT WINAPI d3drm_mesh_builder2_SetVertexColorRGB ( IDirect3DRMMeshBuilder2 *  iface,
DWORD  index,
D3DVALUE  red,
D3DVALUE  green,
D3DVALUE  blue 
)
static

Definition at line 721 of file meshbuilder.c.

723{
724 FIXME("iface %p, index %lu, red %.8e, green %.8e, blue %.8e stub!\n",
725 iface, index, red, green, blue);
726
727 return E_NOTIMPL;
728}

◆ d3drm_mesh_builder2_Translate()

static HRESULT WINAPI d3drm_mesh_builder2_Translate ( IDirect3DRMMeshBuilder2 *  iface,
D3DVALUE  tx,
D3DVALUE  ty,
D3DVALUE  tz 
)
static

Definition at line 529 of file meshbuilder.c.

531{
532 FIXME("iface %p, tx %.8e, ty %.8e, tz %.8e stub!\n", iface, tx, ty, tz);
533
534 return E_NOTIMPL;
535}
GLbyte GLbyte tz
Definition: glext.h:8756
GLbyte ty
Definition: glext.h:8756

◆ d3drm_mesh_builder3_AddDestroyCallback()

static HRESULT WINAPI d3drm_mesh_builder3_AddDestroyCallback ( IDirect3DRMMeshBuilder3 *  iface,
D3DRMOBJECTCALLBACK  cb,
void *  ctx 
)
static

Definition at line 973 of file meshbuilder.c.

975{
977
978 TRACE("iface %p, cb %p, ctx %p.\n", iface, cb, ctx);
979
981}
static struct d3drm_mesh_builder * impl_from_IDirect3DRMMeshBuilder3(IDirect3DRMMeshBuilder3 *iface)
Definition: meshbuilder.c:297

◆ d3drm_mesh_builder3_AddFace()

static HRESULT WINAPI d3drm_mesh_builder3_AddFace ( IDirect3DRMMeshBuilder3 *  iface,
IDirect3DRMFace2 *  face 
)
static

Definition at line 1661 of file meshbuilder.c.

1662{
1663 FIXME("iface %p, face %p stub!\n", iface, face);
1664
1665 return E_NOTIMPL;
1666}

◆ d3drm_mesh_builder3_AddFaces()

static HRESULT WINAPI d3drm_mesh_builder3_AddFaces ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  vertex_count,
D3DVECTOR *  vertices,
DWORD  normal_count,
D3DVECTOR *  normals,
DWORD *  face_data,
IDirect3DRMFaceArray **  array 
)
static

Definition at line 1668 of file meshbuilder.c.

1671{
1672 FIXME("iface %p, vertex_count %lu, vertices %p, normal_count %lu, normals %p, face_data %p array %p stub!\n",
1673 iface, vertex_count, vertices, normal_count, normals, face_data, array);
1674
1675 return E_NOTIMPL;
1676}

◆ d3drm_mesh_builder3_AddFacesIndexed()

static HRESULT WINAPI d3drm_mesh_builder3_AddFacesIndexed ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  flags,
DWORD *  indices,
DWORD *  start_idx,
DWORD *  count 
)
static

Definition at line 2140 of file meshbuilder.c.

2142{
2143 FIXME("iface %p, flags %#lx, indices %p, start_idx %p, count %p stub!\n",
2144 iface, flags, indices, start_idx, count);
2145
2146 return E_NOTIMPL;
2147}
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLuint GLuint GLsizei GLenum const GLvoid * indices
Definition: gl.h:1545

◆ d3drm_mesh_builder3_AddFrame()

static HRESULT WINAPI d3drm_mesh_builder3_AddFrame ( IDirect3DRMMeshBuilder3 *  iface,
IDirect3DRMFrame3 *  frame 
)
static

Definition at line 1654 of file meshbuilder.c.

1655{
1656 FIXME("iface %p, frame %p stub!\n", iface, frame);
1657
1658 return E_NOTIMPL;
1659}

◆ d3drm_mesh_builder3_AddMesh()

static HRESULT WINAPI d3drm_mesh_builder3_AddMesh ( IDirect3DRMMeshBuilder3 *  iface,
IDirect3DRMMesh *  mesh 
)
static

Definition at line 1639 of file meshbuilder.c.

1640{
1641 FIXME("iface %p, mesh %p stub!\n", iface, mesh);
1642
1643 return E_NOTIMPL;
1644}

◆ d3drm_mesh_builder3_AddMeshBuilder()

static HRESULT WINAPI d3drm_mesh_builder3_AddMeshBuilder ( IDirect3DRMMeshBuilder3 *  iface,
IDirect3DRMMeshBuilder3 *  mesh_builder,
DWORD  flags 
)
static

Definition at line 1646 of file meshbuilder.c.

1648{
1649 FIXME("iface %p, mesh_builder %p, flags %#lx stub!\n", iface, mesh_builder, flags);
1650
1651 return E_NOTIMPL;
1652}

◆ d3drm_mesh_builder3_AddNormal()

static int WINAPI d3drm_mesh_builder3_AddNormal ( IDirect3DRMMeshBuilder3 *  iface,
D3DVALUE  x,
D3DVALUE  y,
D3DVALUE  z 
)
static

Definition at line 1872 of file meshbuilder.c.

1874{
1876
1877 TRACE("iface %p, x %.8e, y %.8e, z %.8e.\n", iface, x, y, z);
1878
1879 if (!d3drm_array_reserve((void **)&mesh_builder->normals, &mesh_builder->normals_size,
1880 mesh_builder->nb_normals + 1, sizeof(*mesh_builder->normals)))
1881 return 0;
1882
1883 mesh_builder->normals[mesh_builder->nb_normals].x = x;
1884 mesh_builder->normals[mesh_builder->nb_normals].y = y;
1885 mesh_builder->normals[mesh_builder->nb_normals].z = z;
1886
1887 return mesh_builder->nb_normals++;
1888}

◆ d3drm_mesh_builder3_AddRef()

static ULONG WINAPI d3drm_mesh_builder3_AddRef ( IDirect3DRMMeshBuilder3 *  iface)
static

Definition at line 947 of file meshbuilder.c.

948{
950
951 TRACE("iface %p.\n", iface);
952
953 return d3drm_mesh_builder2_AddRef(&mesh_builder->IDirect3DRMMeshBuilder2_iface);
954}
static ULONG WINAPI d3drm_mesh_builder2_AddRef(IDirect3DRMMeshBuilder2 *iface)
Definition: meshbuilder.c:370

◆ d3drm_mesh_builder3_AddTriangles()

static HRESULT WINAPI d3drm_mesh_builder3_AddTriangles ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  flags,
DWORD  format,
DWORD  vertex_count,
void *  data 
)
static

Definition at line 2193 of file meshbuilder.c.

2195{
2196 FIXME("iface %p, flags %#lx, format %#lx, vertex_count %lu, data %p stub!\n",
2197 iface, flags, format, vertex_count, data);
2198
2199 return E_NOTIMPL;
2200}

◆ d3drm_mesh_builder3_AddVertex()

static int WINAPI d3drm_mesh_builder3_AddVertex ( IDirect3DRMMeshBuilder3 *  iface,
D3DVALUE  x,
D3DVALUE  y,
D3DVALUE  z 
)
static

Definition at line 1854 of file meshbuilder.c.

1856{
1858
1859 TRACE("iface %p, x %.8e, y %.8e, z %.8e.\n", iface, x, y, z);
1860
1861 if (!d3drm_array_reserve((void **)&mesh_builder->vertices, &mesh_builder->vertices_size,
1862 mesh_builder->nb_vertices + 1, sizeof(*mesh_builder->vertices)))
1863 return 0;
1864
1865 mesh_builder->vertices[mesh_builder->nb_vertices].x = x;
1866 mesh_builder->vertices[mesh_builder->nb_vertices].y = y;
1867 mesh_builder->vertices[mesh_builder->nb_vertices].z = z;
1868
1869 return mesh_builder->nb_vertices++;
1870}

◆ d3drm_mesh_builder3_Clone()

static HRESULT WINAPI d3drm_mesh_builder3_Clone ( IDirect3DRMMeshBuilder3 *  iface,
IUnknown *  outer,
REFIID  iid,
void **  out 
)
static

Definition at line 965 of file meshbuilder.c.

967{
968 FIXME("iface %p, outer %p, iid %s, out %p stub!\n", iface, outer, debugstr_guid(iid), out);
969
970 return E_NOTIMPL;
971}

◆ d3drm_mesh_builder3_CreateFace()

static HRESULT WINAPI d3drm_mesh_builder3_CreateFace ( IDirect3DRMMeshBuilder3 *  iface,
IDirect3DRMFace2 **  face 
)
static

Definition at line 1890 of file meshbuilder.c.

1891{
1892 struct d3drm_face *object;
1893 HRESULT hr;
1894
1895 TRACE("iface %p, face %p.\n", iface, face);
1896
1897 if (FAILED(hr = d3drm_face_create(&object)))
1898 return hr;
1899
1900 *face = &object->IDirect3DRMFace2_iface;
1901
1902 return S_OK;
1903}

◆ d3drm_mesh_builder3_CreateMesh()

static HRESULT WINAPI d3drm_mesh_builder3_CreateMesh ( IDirect3DRMMeshBuilder3 *  iface,
IDirect3DRMMesh **  mesh 
)
static

Definition at line 1947 of file meshbuilder.c.

1948{
1950 HRESULT hr;
1952
1953 TRACE("iface %p, mesh %p.\n", iface, mesh);
1954
1955 if (!mesh)
1956 return E_POINTER;
1957
1959 if (FAILED(hr))
1960 return hr;
1961
1962 /* If there is mesh data, create a group and put data inside */
1963 if (mesh_builder->nb_vertices)
1964 {
1965 DWORD i, j;
1966 int k;
1968
1969 if (!(vertices = calloc(mesh_builder->nb_vertices, sizeof(*vertices))))
1970 {
1972 return E_OUTOFMEMORY;
1973 }
1974 for (i = 0; i < mesh_builder->nb_vertices; i++)
1975 vertices[i].position = mesh_builder->vertices[i];
1976 hr = IDirect3DRMMesh_SetVertices(*mesh, 0, 0, mesh_builder->nb_vertices, vertices);
1977 free(vertices);
1978
1979 /* Groups are in reverse order compared to materials list in X file */
1980 for (k = mesh_builder->nb_materials - 1; k >= 0; k--)
1981 {
1982 unsigned* face_data;
1983 unsigned* out_ptr;
1984 DWORD* in_ptr = mesh_builder->pFaceData;
1986 BOOL* used_vertices;
1987 unsigned nb_vertices = 0;
1988 unsigned nb_faces = 0;
1989
1990 if (!(used_vertices = calloc(mesh_builder->face_data_size, sizeof(*used_vertices))))
1991 {
1993 return E_OUTOFMEMORY;
1994 }
1995
1996 if (!(face_data = calloc(mesh_builder->face_data_size, sizeof(*face_data))))
1997 {
1998 free(used_vertices);
2000 return E_OUTOFMEMORY;
2001 }
2002 out_ptr = face_data;
2003
2004 /* If all faces have the same number of vertex, set vertex_per_face */
2005 for (i = 0; i < mesh_builder->nb_faces; i++)
2006 {
2007 /* Process only faces belonging to the group */
2008 if (mesh_builder->material_indices[i] == k)
2009 {
2010 if (vertex_per_face && (vertex_per_face != *in_ptr))
2011 break;
2012 vertex_per_face = *in_ptr;
2013 }
2014 in_ptr += 1 + *in_ptr * 2;
2015 }
2016 if (i != mesh_builder->nb_faces)
2017 vertex_per_face = 0;
2018
2019 /* Put only vertex indices */
2020 in_ptr = mesh_builder->pFaceData;
2021 for (i = 0; i < mesh_builder->nb_faces; i++)
2022 {
2023 DWORD nb_indices = *in_ptr++;
2024
2025 /* Skip faces not belonging to the group */
2026 if (mesh_builder->material_indices[i] != k)
2027 {
2028 in_ptr += 2 * nb_indices;
2029 continue;
2030 }
2031
2032 /* Don't put nb indices when vertex_per_face is set */
2033 if (vertex_per_face)
2034 *out_ptr++ = nb_indices;
2035
2036 for (j = 0; j < nb_indices; j++)
2037 {
2038 *out_ptr = *in_ptr++;
2039 used_vertices[*out_ptr++] = TRUE;
2040 /* Skip normal index */
2041 in_ptr++;
2042 }
2043
2044 nb_faces++;
2045 }
2046
2047 for (i = 0; i < mesh_builder->nb_vertices; i++)
2048 if (used_vertices[i])
2049 nb_vertices++;
2050
2052 free(used_vertices);
2053 free(face_data);
2054 if (SUCCEEDED(hr))
2055 hr = IDirect3DRMMesh_SetGroupColor(*mesh, group, mesh_builder->materials[k].color);
2056 if (SUCCEEDED(hr))
2058 (IDirect3DRMMaterial *)mesh_builder->materials[k].material);
2059 if (SUCCEEDED(hr) && mesh_builder->materials[k].texture)
2060 {
2061 IDirect3DRMTexture *texture;
2062
2064 &IID_IDirect3DRMTexture, (void **)&texture);
2067 }
2068 if (FAILED(hr))
2069 {
2071 return hr;
2072 }
2073 }
2074 }
2075
2076 return D3DRM_OK;
2077}
#define IDirect3DRM_CreateMesh(p, a)
Definition: d3drm.h:115
LONG D3DRMGROUPINDEX
Definition: d3drmdef.h:431
#define IDirect3DRMTexture3_QueryInterface(p, a, b)
Definition: d3drmobj.h:3474
#define IDirect3DRMMesh_AddGroup(p, a, b, c, d, e)
Definition: d3drmobj.h:1955
#define IDirect3DRMTexture_Release(p)
Definition: d3drmobj.h:3232
#define IDirect3DRMMesh_SetGroupMaterial(p, a, b)
Definition: d3drmobj.h:1961
#define IDirect3DRMMesh_SetGroupTexture(p, a, b)
Definition: d3drmobj.h:1962
#define IDirect3DRMMesh_Release(p)
Definition: d3drmobj.h:1941
#define IDirect3DRMMesh_SetGroupColor(p, a, b)
Definition: d3drmobj.h:1957
#define IDirect3DRMMesh_SetVertices(p, a, b, c, d)
Definition: d3drmobj.h:1956
unsigned int BOOL
Definition: ntddk_ex.h:94
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
Definition: glfuncs.h:250
int k
Definition: mpi.c:3369

◆ d3drm_mesh_builder3_CreateSubMesh()

static HRESULT WINAPI d3drm_mesh_builder3_CreateSubMesh ( IDirect3DRMMeshBuilder3 *  iface,
IUnknown **  mesh 
)
static

Definition at line 2149 of file meshbuilder.c.

2150{
2151 FIXME("iface %p, mesh %p stub!\n", iface, mesh);
2152
2153 return E_NOTIMPL;
2154}

◆ d3drm_mesh_builder3_DeleteDestroyCallback()

static HRESULT WINAPI d3drm_mesh_builder3_DeleteDestroyCallback ( IDirect3DRMMeshBuilder3 *  iface,
D3DRMOBJECTCALLBACK  cb,
void *  ctx 
)
static

Definition at line 983 of file meshbuilder.c.

985{
987
988 TRACE("iface %p, cb %p, ctx %p.\n", iface, cb, ctx);
989
991}
HRESULT d3drm_object_delete_destroy_callback(struct d3drm_object *object, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: d3drm_main.c:74

◆ d3drm_mesh_builder3_DeleteFace()

static HRESULT WINAPI d3drm_mesh_builder3_DeleteFace ( IDirect3DRMMeshBuilder3 *  iface,
IDirect3DRMFace2 *  face 
)
static

Definition at line 2119 of file meshbuilder.c.

2120{
2121 FIXME("iface %p, face %p stub!\n", iface, face);
2122
2123 return E_NOTIMPL;
2124}

◆ d3drm_mesh_builder3_DeleteNormals()

static HRESULT WINAPI d3drm_mesh_builder3_DeleteNormals ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  start_idx,
DWORD  count 
)
static

Definition at line 2111 of file meshbuilder.c.

2113{
2114 FIXME("iface %p, start_idx %lu, count %lu stub!\n", iface, start_idx, count);
2115
2116 return E_NOTIMPL;
2117}

◆ d3drm_mesh_builder3_DeleteSubMesh()

static HRESULT WINAPI d3drm_mesh_builder3_DeleteSubMesh ( IDirect3DRMMeshBuilder3 *  iface,
IUnknown *  mesh 
)
static

Definition at line 2172 of file meshbuilder.c.

2173{
2174 FIXME("iface %p, mesh %p stub!\n", iface, mesh);
2175
2176 return E_NOTIMPL;
2177}

◆ d3drm_mesh_builder3_DeleteVertices()

static HRESULT WINAPI d3drm_mesh_builder3_DeleteVertices ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  start_idx,
DWORD  count 
)
static

Definition at line 2103 of file meshbuilder.c.

2105{
2106 FIXME("iface %p, start_idx %lu, count %lu stub!\n", iface, start_idx, count);
2107
2108 return E_NOTIMPL;
2109}

◆ d3drm_mesh_builder3_Empty()

static HRESULT WINAPI d3drm_mesh_builder3_Empty ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  flags 
)
static

Definition at line 2126 of file meshbuilder.c.

2127{
2128 FIXME("iface %p, flags %#lx stub!\n", iface, flags);
2129
2130 return E_NOTIMPL;
2131}

◆ d3drm_mesh_builder3_Enable()

static HRESULT WINAPI d3drm_mesh_builder3_Enable ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  index 
)
static

Definition at line 2179 of file meshbuilder.c.

2180{
2181 FIXME("iface %p, index %lu stub!\n", iface, index);
2182
2183 return E_NOTIMPL;
2184}

◆ d3drm_mesh_builder3_GenerateNormals()

static HRESULT WINAPI d3drm_mesh_builder3_GenerateNormals ( IDirect3DRMMeshBuilder3 *  iface,
D3DVALUE  crease,
DWORD  flags 
)
static

Definition at line 1624 of file meshbuilder.c.

1626{
1627 FIXME("iface %p, crease %.8e, flags %#lx stub!\n", iface, crease, flags);
1628
1629 return E_NOTIMPL;
1630}

◆ d3drm_mesh_builder3_GetAppData()

static DWORD WINAPI d3drm_mesh_builder3_GetAppData ( IDirect3DRMMeshBuilder3 *  iface)
static

Definition at line 450 of file meshbuilder.c.

451{
453
454 TRACE("iface %p.\n", iface);
455
456 return mesh_builder->obj.appdata;
457}

Referenced by d3drm_mesh_builder2_GetAppData().

◆ d3drm_mesh_builder3_GetBox()

static HRESULT WINAPI d3drm_mesh_builder3_GetBox ( IDirect3DRMMeshBuilder3 *  iface,
D3DRMBOX *  box 
)
static

Definition at line 1617 of file meshbuilder.c.

1618{
1619 FIXME("iface %p, box %p stub!\n", iface, box);
1620
1621 return E_NOTIMPL;
1622}

◆ d3drm_mesh_builder3_GetClassName()

static HRESULT WINAPI d3drm_mesh_builder3_GetClassName ( IDirect3DRMMeshBuilder3 *  iface,
DWORD *  size,
char *  name 
)
static

Definition at line 1012 of file meshbuilder.c.

1014{
1015 struct d3drm_mesh_builder *meshbuilder = impl_from_IDirect3DRMMeshBuilder3(iface);
1016
1017 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
1018
1019 return d3drm_object_get_class_name(&meshbuilder->obj, size, name);
1020}
HRESULT d3drm_object_get_class_name(struct d3drm_object *object, DWORD *size, char *name)
Definition: d3drm_main.c:94
struct d3drm_object obj

◆ d3drm_mesh_builder3_GetColorSource()

static D3DRMCOLORSOURCE WINAPI d3drm_mesh_builder3_GetColorSource ( IDirect3DRMMeshBuilder3 *  iface)
static

Definition at line 1632 of file meshbuilder.c.

1633{
1634 FIXME("iface %p stub!\n", iface);
1635
1636 return E_NOTIMPL;
1637}

◆ d3drm_mesh_builder3_GetEnable()

static HRESULT WINAPI d3drm_mesh_builder3_GetEnable ( IDirect3DRMMeshBuilder3 *  iface,
DWORD *  indices 
)
static

Definition at line 2186 of file meshbuilder.c.

2187{
2188 FIXME("iface %p, indices %p stub!\n", iface, indices);
2189
2190 return E_NOTIMPL;
2191}

◆ d3drm_mesh_builder3_GetFace()

static HRESULT WINAPI d3drm_mesh_builder3_GetFace ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  index,
IDirect3DRMFace2 **  face 
)
static

Definition at line 2079 of file meshbuilder.c.

2081{
2082 FIXME("iface %p, index %lu, face %p stub!\n", iface, index, face);
2083
2084 return E_NOTIMPL;
2085}

◆ d3drm_mesh_builder3_GetFaceCount()

static int WINAPI d3drm_mesh_builder3_GetFaceCount ( IDirect3DRMMeshBuilder3 *  iface)
static

Definition at line 1921 of file meshbuilder.c.

1922{
1924
1925 TRACE("iface %p.\n", iface);
1926
1927 return mesh_builder->nb_faces;
1928}

◆ d3drm_mesh_builder3_GetFaces()

static HRESULT WINAPI d3drm_mesh_builder3_GetFaces ( IDirect3DRMMeshBuilder3 *  iface,
IDirect3DRMFaceArray **  array 
)
static

Definition at line 1819 of file meshbuilder.c.

1821{
1822 FIXME("iface %p, array %p stub!\n", iface, array);
1823
1824 return E_NOTIMPL;
1825}

◆ d3drm_mesh_builder3_GetGeometry()

static HRESULT WINAPI d3drm_mesh_builder3_GetGeometry ( IDirect3DRMMeshBuilder3 *  iface,
DWORD *  vertex_count,
D3DVECTOR *  vertices,
DWORD *  normal_count,
D3DVECTOR *  normals,
DWORD *  face_data_size,
DWORD *  face_data 
)
static

Definition at line 1827 of file meshbuilder.c.

1830{
1831 FIXME("iface %p, vertex_count %p, vertices %p, normal_count %p, normals %p, "
1832 "face_data_size %p, face_data %p stub!\n",
1833 iface, vertex_count, vertices, normal_count, normals, face_data_size, face_data);
1834
1835 return E_NOTIMPL;
1836}

◆ d3drm_mesh_builder3_GetName()

static HRESULT WINAPI d3drm_mesh_builder3_GetName ( IDirect3DRMMeshBuilder3 *  iface,
DWORD *  size,
char *  name 
)
static

Definition at line 1002 of file meshbuilder.c.

1004{
1006
1007 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
1008
1010}
HRESULT d3drm_object_get_name(struct d3drm_object *object, DWORD *size, char *name)
Definition: d3drm_main.c:113

◆ d3drm_mesh_builder3_GetNormal()

static HRESULT WINAPI d3drm_mesh_builder3_GetNormal ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  index,
D3DVECTOR *  vector 
)
static

Definition at line 2095 of file meshbuilder.c.

2097{
2098 FIXME("iface %p, index %lu, vector %p stub!\n", iface, index, vector);
2099
2100 return E_NOTIMPL;
2101}

◆ d3drm_mesh_builder3_GetNormalCount()

static int WINAPI d3drm_mesh_builder3_GetNormalCount ( IDirect3DRMMeshBuilder3 *  iface)
static

Definition at line 2253 of file meshbuilder.c.

2254{
2256
2257 TRACE("iface %p.\n", iface);
2258
2259 return mesh_builder->nb_normals;
2260}

◆ d3drm_mesh_builder3_GetNormals()

static HRESULT WINAPI d3drm_mesh_builder3_GetNormals ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  start_idx,
DWORD *  normal_count,
D3DVECTOR *  normals 
)
static

Definition at line 2236 of file meshbuilder.c.

2238{
2240 DWORD count = mesh_builder->nb_normals - start_idx;
2241
2242 TRACE("iface %p, start_idx %lu, normal_count %p, normals %p.\n",
2243 iface, start_idx, normal_count, normals);
2244
2245 if (normal_count)
2246 *normal_count = count;
2247 if (normals && mesh_builder->nb_normals)
2248 memcpy(normals, &mesh_builder->normals[start_idx], count * sizeof(*normals));
2249
2250 return D3DRM_OK;
2251}

◆ d3drm_mesh_builder3_GetParentMesh()

static HRESULT WINAPI d3drm_mesh_builder3_GetParentMesh ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  flags,
IUnknown **  parent 
)
static

Definition at line 2156 of file meshbuilder.c.

2158{
2159 FIXME("iface %p, flags %#lx, parent %p stub!\n", iface, flags, parent);
2160
2161 return E_NOTIMPL;
2162}
r parent
Definition: btrfs.c:3010

◆ d3drm_mesh_builder3_GetPerspective()

static BOOL WINAPI d3drm_mesh_builder3_GetPerspective ( IDirect3DRMMeshBuilder3 *  iface)
static

Definition at line 1914 of file meshbuilder.c.

1915{
1916 FIXME("iface %p stub!\n", iface);
1917
1918 return FALSE;
1919}

◆ d3drm_mesh_builder3_GetQuality()

static D3DRMRENDERQUALITY WINAPI d3drm_mesh_builder3_GetQuality ( IDirect3DRMMeshBuilder3 *  iface)
static

Definition at line 1905 of file meshbuilder.c.

1906{
1908
1909 TRACE("iface %p\n", iface);
1910
1911 return mesh_builder->quality;
1912}

◆ d3drm_mesh_builder3_GetSubMeshes()

static HRESULT WINAPI d3drm_mesh_builder3_GetSubMeshes ( IDirect3DRMMeshBuilder3 *  iface,
DWORD *  count,
IUnknown **  meshes 
)
static

Definition at line 2164 of file meshbuilder.c.

2166{
2167 FIXME("iface %p, count %p, meshes %p stub!\n", iface, count, meshes);
2168
2169 return E_NOTIMPL;
2170}

◆ d3drm_mesh_builder3_GetTextureCoordinates()

static HRESULT WINAPI d3drm_mesh_builder3_GetTextureCoordinates ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  index,
D3DVALUE *  u,
D3DVALUE *  v 
)
static

Definition at line 1838 of file meshbuilder.c.

1840{
1842
1843 TRACE("iface %p, index %lu, u %p, v %p.\n", iface, index, u, v);
1844
1845 if (index >= mesh_builder->nb_coords2d)
1846 return D3DRMERR_BADVALUE;
1847
1848 *u = mesh_builder->pCoords2d[index].u;
1849 *v = mesh_builder->pCoords2d[index].v;
1850
1851 return D3DRM_OK;
1852}
#define index(s, c)
Definition: various.h:29

◆ d3drm_mesh_builder3_GetVertex()

static HRESULT WINAPI d3drm_mesh_builder3_GetVertex ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  index,
D3DVECTOR *  vector 
)
static

Definition at line 2087 of file meshbuilder.c.

2089{
2090 FIXME("iface %p, index %lu, vector %p stub!\n", iface, index, vector);
2091
2092 return E_NOTIMPL;
2093}

◆ d3drm_mesh_builder3_GetVertexColor()

static D3DCOLOR WINAPI d3drm_mesh_builder3_GetVertexColor ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  index 
)
static

Definition at line 1939 of file meshbuilder.c.

1941{
1942 FIXME("iface %p, index %lu stub!\n", iface, index);
1943
1944 return 0;
1945}

◆ d3drm_mesh_builder3_GetVertexCount()

static int WINAPI d3drm_mesh_builder3_GetVertexCount ( IDirect3DRMMeshBuilder3 *  iface)
static

Definition at line 1930 of file meshbuilder.c.

1931{
1933
1934 TRACE("iface %p.\n", iface);
1935
1936 return mesh_builder->nb_vertices;
1937}

◆ d3drm_mesh_builder3_GetVertices()

static HRESULT WINAPI d3drm_mesh_builder3_GetVertices ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  start_idx,
DWORD *  vertex_count,
D3DVECTOR *  vertices 
)
static

Definition at line 2210 of file meshbuilder.c.

2212{
2214 DWORD count = mesh_builder->nb_vertices - start_idx;
2215
2216 TRACE("iface %p, start_idx %lu, vertex_count %p, vertices %p.\n",
2217 iface, start_idx, vertex_count, vertices);
2218
2219 if (vertex_count)
2221 if (vertices && mesh_builder->nb_vertices)
2222 memcpy(vertices, mesh_builder->vertices + start_idx, count * sizeof(*vertices));
2223
2224 return D3DRM_OK;
2225}

◆ d3drm_mesh_builder3_Load()

static HRESULT WINAPI d3drm_mesh_builder3_Load ( IDirect3DRMMeshBuilder3 *  iface,
void *  filename,
void *  name,
D3DRMLOADOPTIONS  loadflags,
D3DRMLOADTEXTURE3CALLBACK  cb,
void *  arg 
)
static

Definition at line 1462 of file meshbuilder.c.

1464{
1465 static const DWORD supported_flags = D3DRMLOAD_FROMFILE | D3DRMLOAD_FROMRESOURCE
1468 DXFILELOADOPTIONS load_options = loadflags & supported_flags;
1469 IDirectXFile *dxfile = NULL;
1470 IDirectXFileEnumObject *enum_object = NULL;
1471 IDirectXFileData *data = NULL;
1472 const GUID* guid;
1473 DWORD size;
1474 struct d3drm_file_header *header;
1475 HRESULT hr;
1477
1478 TRACE("iface %p, filename %p, name %p, loadflags %#lx, cb %p, arg %p.\n",
1479 iface, filename, name, loadflags, cb, arg);
1480
1481 if (loadflags & ~supported_flags)
1482 FIXME("Ignoring flags %#lx.\n", loadflags & ~supported_flags);
1483
1485
1486 hr = DirectXFileCreate(&dxfile);
1487 if (hr != DXFILE_OK)
1488 goto end;
1489
1491 if (hr != DXFILE_OK)
1492 goto end;
1493
1494 hr = IDirectXFile_CreateEnumObject(dxfile, filename, load_options, &enum_object);
1495 if (hr != DXFILE_OK)
1496 {
1497 WARN("Failed to create object, load flags %#lx.\n", loadflags);
1498 goto end;
1499 }
1500
1502 if (hr != DXFILE_OK)
1503 goto end;
1504
1506 if (hr != DXFILE_OK)
1507 goto end;
1508
1509 TRACE("Found object type whose GUID = %s\n", debugstr_guid(guid));
1510
1511 if (!IsEqualGUID(guid, &TID_DXFILEHeader))
1512 {
1514 goto end;
1515 }
1516
1518 if ((hr != DXFILE_OK) || (size != sizeof(*header)))
1519 goto end;
1520
1521 TRACE("Version is %u.%u, flags %#lx.\n", header->major, header->minor, header->flags);
1522
1523 /* Version must be 1.0.x */
1524 if ((header->major != 1) || (header->minor != 0))
1525 {
1527 goto end;
1528 }
1529
1531 data = NULL;
1532
1534 if (hr != DXFILE_OK)
1535 {
1537 goto end;
1538 }
1539
1541 if (hr != DXFILE_OK)
1542 goto end;
1543
1544 TRACE("Found object type whose GUID = %s\n", debugstr_guid(guid));
1545
1546 if (!IsEqualGUID(guid, &TID_D3DRMMesh))
1547 {
1549 goto end;
1550 }
1551
1552 /* We don't care about the texture interface version since we rely on QueryInterface */
1554 if (hr == S_OK)
1555 ret = D3DRM_OK;
1556
1557end:
1558
1559 if (data)
1561 if (enum_object)
1562 IDirectXFileEnumObject_Release(enum_object);
1563 if (dxfile)
1564 IDirectXFile_Release(dxfile);
1565
1566 if (ret != D3DRM_OK)
1568
1569 return ret;
1570}
#define D3DRMERR_NOTFOUND
Definition: d3drm.h:491
#define D3DRMERR_BADFILE
Definition: d3drm.h:494
#define D3DRMERR_BADOBJECT
Definition: d3drm.h:487
#define D3DRMLOAD_FROMURL
Definition: d3drmdef.h:345
#define D3DRMLOAD_FROMFILE
Definition: d3drmdef.h:341
#define D3DRMLOAD_FROMSTREAM
Definition: d3drmdef.h:344
#define D3DRMLOAD_FROMMEMORY
Definition: d3drmdef.h:343
#define D3DRMLOAD_FROMRESOURCE
Definition: d3drmdef.h:342
HRESULT(__cdecl * D3DRMLOADTEXTURECALLBACK)(char *tex_name, void *arg, struct IDirect3DRMTexture **texture)
Definition: d3drmobj.h:165
HRESULT WINAPI DirectXFileCreate(LPDIRECTXFILE *lplpDirectXFile)
Definition: main.c:121
GUID guid
Definition: version.c:147
_ACRTIMP size_t __cdecl strlen(const char *)
Definition: string.c:1597
return ret
Definition: mutex.c:147
#define IDirectXFile_RegisterTemplates(p, a, b)
Definition: dxfile.h:86
DWORD DXFILELOADOPTIONS
Definition: dxfile.h:35
#define IDirectXFile_Release(p)
Definition: dxfile.h:82
#define IDirectXFileEnumObject_GetNextDataObject(p, a)
Definition: dxfile.h:109
#define IDirectXFileEnumObject_Release(p)
Definition: dxfile.h:107
#define IDirectXFile_CreateEnumObject(p, a, b, c)
Definition: dxfile.h:84
#define IDirectXFileData_GetType(p, a)
Definition: dxfile.h:191
#define DXFILE_OK
Definition: dxfile.h:268
#define IDirectXFileData_GetData(p, a, b, c)
Definition: dxfile.h:190
#define IDirectXFileData_Release(p)
Definition: dxfile.h:185
GLuint GLuint end
Definition: gl.h:1545
char templates[]
Definition: meshbuilder.c:39
HRESULT load_mesh_data(IDirect3DRMMeshBuilder3 *iface, IDirectXFileData *pData, D3DRMLOADTEXTURECALLBACK load_texture_proc, void *arg)
Definition: meshbuilder.c:1022

◆ d3drm_mesh_builder3_Optimize()

static HRESULT WINAPI d3drm_mesh_builder3_Optimize ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  flags 
)
static

Definition at line 2133 of file meshbuilder.c.

2134{
2135 FIXME("iface %p, flags %#lx stub!\n", iface, flags);
2136
2137 return S_OK;
2138}

◆ d3drm_mesh_builder3_QueryInterface()

static HRESULT WINAPI d3drm_mesh_builder3_QueryInterface ( IDirect3DRMMeshBuilder3 *  iface,
REFIID  riid,
void **  out 
)
static

Definition at line 938 of file meshbuilder.c.

939{
941
942 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
943
944 return d3drm_mesh_builder2_QueryInterface(&mesh_builder->IDirect3DRMMeshBuilder2_iface, riid, out);
945}
static HRESULT WINAPI d3drm_mesh_builder2_QueryInterface(IDirect3DRMMeshBuilder2 *iface, REFIID riid, void **out)
Definition: meshbuilder.c:341

◆ d3drm_mesh_builder3_Release()

static ULONG WINAPI d3drm_mesh_builder3_Release ( IDirect3DRMMeshBuilder3 *  iface)
static

Definition at line 956 of file meshbuilder.c.

957{
959
960 TRACE("iface %p.\n", iface);
961
962 return d3drm_mesh_builder2_Release(&mesh_builder->IDirect3DRMMeshBuilder2_iface);
963}
static ULONG WINAPI d3drm_mesh_builder2_Release(IDirect3DRMMeshBuilder2 *iface)
Definition: meshbuilder.c:380

◆ d3drm_mesh_builder3_ReserveSpace()

static HRESULT WINAPI d3drm_mesh_builder3_ReserveSpace ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  vertex_count,
DWORD  normal_count,
DWORD  face_count 
)
static

Definition at line 1678 of file meshbuilder.c.

1680{
1681 FIXME("iface %p, vertex_count %lu, normal_count %lu, face_count %lu stub!\n",
1682 iface, vertex_count, normal_count, face_count);
1683
1684 return E_NOTIMPL;
1685}

◆ d3drm_mesh_builder3_Save()

static HRESULT WINAPI d3drm_mesh_builder3_Save ( IDirect3DRMMeshBuilder3 *  iface,
const char *  filename,
D3DRMXOFFORMAT  format,
D3DRMSAVEOPTIONS  flags 
)
static

Definition at line 1572 of file meshbuilder.c.

1574{
1575 FIXME("iface %p, filename %s, format %#x, flags %#lx stub!\n",
1576 iface, debugstr_a(filename), format, flags);
1577
1578 return E_NOTIMPL;
1579}

◆ d3drm_mesh_builder3_Scale()

static HRESULT WINAPI d3drm_mesh_builder3_Scale ( IDirect3DRMMeshBuilder3 *  iface,
D3DVALUE  sx,
D3DVALUE  sy,
D3DVALUE  sz 
)
static

Definition at line 1581 of file meshbuilder.c.

1583{
1585 DWORD i;
1586
1587 TRACE("iface %p, sx %.8e, sy %.8e, sz %.8e.\n", iface, sx, sy, sz);
1588
1589 for (i = 0; i < mesh_builder->nb_vertices; ++i)
1590 {
1591 mesh_builder->vertices[i].x *= sx;
1592 mesh_builder->vertices[i].y *= sy;
1593 mesh_builder->vertices[i].z *= sz;
1594 }
1595
1596 /* Normals are not affected by Scale */
1597
1598 return D3DRM_OK;
1599}

◆ d3drm_mesh_builder3_SetAppData()

static HRESULT WINAPI d3drm_mesh_builder3_SetAppData ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  data 
)
static

Definition at line 430 of file meshbuilder.c.

431{
433
434 TRACE("iface %p, data %#lx.\n", iface, data);
435
436 mesh_builder->obj.appdata = data;
437
438 return D3DRM_OK;
439}

Referenced by d3drm_mesh_builder2_SetAppData().

◆ d3drm_mesh_builder3_SetColor()

static HRESULT WINAPI d3drm_mesh_builder3_SetColor ( IDirect3DRMMeshBuilder3 *  iface,
D3DCOLOR  color 
)
static

Definition at line 1699 of file meshbuilder.c.

1700{
1702
1703 TRACE("iface %p, color 0x%08lx.\n", iface, color);
1704
1705 mesh_builder->color = color;
1706
1707 return D3DRM_OK;
1708}

◆ d3drm_mesh_builder3_SetColorRGB()

static HRESULT WINAPI d3drm_mesh_builder3_SetColorRGB ( IDirect3DRMMeshBuilder3 *  iface,
D3DVALUE  red,
D3DVALUE  green,
D3DVALUE  blue 
)
static

Definition at line 1687 of file meshbuilder.c.

1689{
1691
1692 TRACE("iface %p, red %.8e, green %.8e, blue %.8e.\n", iface, red, green, blue);
1693
1694 d3drm_set_color(&mesh_builder->color, red, green, blue, 1.0f);
1695
1696 return D3DRM_OK;
1697}
static void d3drm_set_color(D3DCOLOR *color, float r, float g, float b, float a)

◆ d3drm_mesh_builder3_SetColorSource()

static HRESULT WINAPI d3drm_mesh_builder3_SetColorSource ( IDirect3DRMMeshBuilder3 *  iface,
D3DRMCOLORSOURCE  source 
)
static

Definition at line 1609 of file meshbuilder.c.

1611{
1612 FIXME("iface %p, source %#x stub!\n", iface, source);
1613
1614 return E_NOTIMPL;
1615}

◆ d3drm_mesh_builder3_SetMaterial()

static HRESULT WINAPI d3drm_mesh_builder3_SetMaterial ( IDirect3DRMMeshBuilder3 *  iface,
IDirect3DRMMaterial2 *  material 
)
static

Definition at line 1726 of file meshbuilder.c.

1728{
1730
1731 TRACE("iface %p, material %p.\n", iface, material);
1732
1733 if (material)
1735 if (mesh_builder->material)
1737 mesh_builder->material = material;
1738
1739 return D3DRM_OK;
1740}
#define IDirect3DRMTexture2_Release(p)
Definition: d3drmobj.h:3348
#define IDirect3DRMTexture2_AddRef(p)
Definition: d3drmobj.h:3347

◆ d3drm_mesh_builder3_SetName()

static HRESULT WINAPI d3drm_mesh_builder3_SetName ( IDirect3DRMMeshBuilder3 *  iface,
const char *  name 
)
static

Definition at line 993 of file meshbuilder.c.

994{
996
997 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
998
1000}
HRESULT d3drm_object_set_name(struct d3drm_object *object, const char *name)
Definition: d3drm_main.c:137

◆ d3drm_mesh_builder3_SetNormal()

static HRESULT WINAPI d3drm_mesh_builder3_SetNormal ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  index,
D3DVALUE  x,
D3DVALUE  y,
D3DVALUE  z 
)
static

Definition at line 1778 of file meshbuilder.c.

1780{
1781 FIXME("iface %p, index %lu, x %.8e, y %.8e, z %.8e stub!\n", iface, index, x, y, z);
1782
1783 return E_NOTIMPL;
1784}

◆ d3drm_mesh_builder3_SetNormals()

static HRESULT WINAPI d3drm_mesh_builder3_SetNormals ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  start_idx,
DWORD  count,
D3DVECTOR *  vector 
)
static

Definition at line 2227 of file meshbuilder.c.

2229{
2230 FIXME("iface %p, start_idx %lu, count %lu, vector %p stub!\n",
2231 iface, start_idx, count, vector);
2232
2233 return E_NOTIMPL;
2234}

◆ d3drm_mesh_builder3_SetPerspective()

static HRESULT WINAPI d3drm_mesh_builder3_SetPerspective ( IDirect3DRMMeshBuilder3 *  iface,
BOOL  enable 
)
static

Definition at line 1762 of file meshbuilder.c.

1764{
1765 FIXME("iface %p, enable %#x stub!\n", iface, enable);
1766
1767 return E_NOTIMPL;
1768}

◆ d3drm_mesh_builder3_SetQuality()

static HRESULT WINAPI d3drm_mesh_builder3_SetQuality ( IDirect3DRMMeshBuilder3 *  iface,
D3DRMRENDERQUALITY  quality 
)
static

Definition at line 1750 of file meshbuilder.c.

1752{
1754
1755 TRACE("iface %p, quality %#lx\n", iface, quality);
1756
1757 mesh_builder->quality = quality;
1758
1759 return S_OK;
1760}

◆ d3drm_mesh_builder3_SetTexture()

static HRESULT WINAPI d3drm_mesh_builder3_SetTexture ( IDirect3DRMMeshBuilder3 *  iface,
IDirect3DRMTexture3 *  texture 
)
static

Definition at line 1710 of file meshbuilder.c.

1712{
1714
1715 TRACE("iface %p, texture %p.\n", iface, texture);
1716
1717 if (texture)
1719 if (mesh_builder->texture)
1721 mesh_builder->texture = texture;
1722
1723 return D3DRM_OK;
1724}
#define IDirect3DRMTexture3_AddRef(p)
Definition: d3drmobj.h:3475

◆ d3drm_mesh_builder3_SetTextureCoordinates()

static HRESULT WINAPI d3drm_mesh_builder3_SetTextureCoordinates ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  index,
D3DVALUE  u,
D3DVALUE  v 
)
static

Definition at line 1786 of file meshbuilder.c.

1788{
1790
1791 TRACE("iface %p, index %lu, u %.8e, v %.8e.\n", iface, index, u, v);
1792
1793 if (index >= mesh_builder->nb_coords2d)
1794 return D3DRMERR_BADVALUE;
1795
1796 mesh_builder->pCoords2d[index].u = u;
1797 mesh_builder->pCoords2d[index].v = v;
1798
1799 return D3DRM_OK;
1800}

◆ d3drm_mesh_builder3_SetTextureTopology()

static HRESULT WINAPI d3drm_mesh_builder3_SetTextureTopology ( IDirect3DRMMeshBuilder3 *  iface,
BOOL  wrap_u,
BOOL  wrap_v 
)
static

Definition at line 1742 of file meshbuilder.c.

1744{
1745 FIXME("iface %p, wrap_u %#x, wrap_v %#x stub!\n", iface, wrap_u, wrap_v);
1746
1747 return E_NOTIMPL;
1748}

◆ d3drm_mesh_builder3_SetVertex()

static HRESULT WINAPI d3drm_mesh_builder3_SetVertex ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  index,
D3DVALUE  x,
D3DVALUE  y,
D3DVALUE  z 
)
static

Definition at line 1770 of file meshbuilder.c.

1772{
1773 FIXME("iface %p, index %lu, x %.8e, y %.8e, z %.8e stub!\n", iface, index, x, y, z);
1774
1775 return E_NOTIMPL;
1776}

◆ d3drm_mesh_builder3_SetVertexColor()

static HRESULT WINAPI d3drm_mesh_builder3_SetVertexColor ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  index,
D3DCOLOR  color 
)
static

Definition at line 1802 of file meshbuilder.c.

1804{
1805 FIXME("iface %p, index %lu, color 0x%08lx stub!\n", iface, index, color);
1806
1807 return E_NOTIMPL;
1808}

◆ d3drm_mesh_builder3_SetVertexColorRGB()

static HRESULT WINAPI d3drm_mesh_builder3_SetVertexColorRGB ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  index,
D3DVALUE  red,
D3DVALUE  green,
D3DVALUE  blue 
)
static

Definition at line 1810 of file meshbuilder.c.

1812{
1813 FIXME("iface %p, index %lu, red %.8e, green %.8e, blue %.8e stub!\n",
1814 iface, index, red, green, blue);
1815
1816 return E_NOTIMPL;
1817}

◆ d3drm_mesh_builder3_SetVertices()

static HRESULT WINAPI d3drm_mesh_builder3_SetVertices ( IDirect3DRMMeshBuilder3 *  iface,
DWORD  start_idx,
DWORD  count,
D3DVECTOR *  vector 
)
static

Definition at line 2202 of file meshbuilder.c.

2204{
2205 FIXME("iface %p, start_idx %lu, count %lu, vector %p stub!\n", iface, start_idx, count, vector);
2206
2207 return E_NOTIMPL;
2208}

◆ d3drm_mesh_builder3_Translate()

static HRESULT WINAPI d3drm_mesh_builder3_Translate ( IDirect3DRMMeshBuilder3 *  iface,
D3DVALUE  tx,
D3DVALUE  ty,
D3DVALUE  tz 
)
static

Definition at line 1601 of file meshbuilder.c.

1603{
1604 FIXME("iface %p, tx %.8e, ty %.8e, tz %.8e stub!\n", iface, tx, ty, tz);
1605
1606 return E_NOTIMPL;
1607}

◆ d3drm_mesh_builder_create()

HRESULT d3drm_mesh_builder_create ( struct d3drm_mesh_builder **  mesh_builder,
IDirect3DRM *  d3drm 
)

Definition at line 2336 of file meshbuilder.c.

2337{
2338 static const char classname[] = "Builder";
2339 struct d3drm_mesh_builder *object;
2340
2341 TRACE("mesh_builder %p.\n", mesh_builder);
2342
2343 if (!(object = calloc(1, sizeof(*object))))
2344 return E_OUTOFMEMORY;
2345
2346 object->IDirect3DRMMeshBuilder2_iface.lpVtbl = &d3drm_mesh_builder2_vtbl;
2347 object->IDirect3DRMMeshBuilder3_iface.lpVtbl = &d3drm_mesh_builder3_vtbl;
2348 object->ref = 1;
2349 object->d3drm = d3drm;
2350 object->quality = D3DRMRENDER_GOURAUD;
2351 IDirect3DRM_AddRef(object->d3drm);
2352
2354
2356
2357 return S_OK;
2358}
#define IDirect3DRM_AddRef(p)
Definition: d3drm.h:110
void d3drm_object_init(struct d3drm_object *object, const char *classname)
Definition: d3drm_main.c:41
#define D3DRMRENDER_GOURAUD
Definition: d3drmdef.h:94
static const struct IDirect3DRMMeshBuilder3Vtbl d3drm_mesh_builder3_vtbl
Definition: meshbuilder.c:2262
static const struct IDirect3DRMMeshBuilder2Vtbl d3drm_mesh_builder2_vtbl
Definition: meshbuilder.c:883
WCHAR classname[128]
Definition: startup.c:15
IDirect3DRM * d3drm

Referenced by d3drm2_CreateMeshBuilder(), d3drm3_CreateMeshBuilder(), and d3drm_create_mesh_builder_object().

◆ d3drm_mesh_Clone()

static HRESULT WINAPI d3drm_mesh_Clone ( IDirect3DRMMesh *  iface,
IUnknown *  outer,
REFIID  iid,
void **  out 
)
static

Definition at line 2419 of file meshbuilder.c.

2421{
2422 FIXME("iface %p, outer %p, iid %s, out %p stub!\n", iface, outer, debugstr_guid(iid), out);
2423
2424 return E_NOTIMPL;
2425}

◆ d3drm_mesh_create()

HRESULT d3drm_mesh_create ( struct d3drm_mesh **  mesh,
IDirect3DRM *  d3drm 
)

Definition at line 2836 of file meshbuilder.c.

2837{
2838 static const char classname[] = "Mesh";
2839 struct d3drm_mesh *object;
2840
2841 TRACE("mesh %p, d3drm %p.\n", mesh, d3drm);
2842
2843 if (!(object = calloc(1, sizeof(*object))))
2844 return E_OUTOFMEMORY;
2845
2846 object->IDirect3DRMMesh_iface.lpVtbl = &d3drm_mesh_vtbl;
2847 object->ref = 1;
2848 object->d3drm = d3drm;
2849 IDirect3DRM_AddRef(object->d3drm);
2850
2852
2853 *mesh = object;
2854
2855 return S_OK;
2856}
static const struct IDirect3DRMMeshVtbl d3drm_mesh_vtbl
Definition: meshbuilder.c:2802
IDirect3DRM * d3drm
Definition: d3drm.c:189

Referenced by d3drm3_CreateMesh(), and d3drm_create_mesh_object().

◆ d3drm_mesh_DeleteDestroyCallback()

static HRESULT WINAPI d3drm_mesh_DeleteDestroyCallback ( IDirect3DRMMesh *  iface,
D3DRMOBJECTCALLBACK  cb,
void *  ctx 
)
static

Definition at line 2437 of file meshbuilder.c.

2439{
2440 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2441
2442 TRACE("iface %p, cb %p, ctx %p.\n", iface, cb, ctx);
2443
2445}

◆ d3drm_mesh_GetAppData()

static DWORD WINAPI d3drm_mesh_GetAppData ( IDirect3DRMMesh *  iface)
static

Definition at line 2458 of file meshbuilder.c.

2459{
2460 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2461
2462 TRACE("iface %p.\n", iface);
2463
2464 return mesh->obj.appdata;
2465}

◆ d3drm_mesh_GetBox()

static HRESULT WINAPI d3drm_mesh_GetBox ( IDirect3DRMMesh *  iface,
D3DRMBOX *  box 
)
static

Definition at line 2510 of file meshbuilder.c.

2511{
2512 FIXME("iface %p, box %p stub!\n", iface, box);
2513
2514 return E_NOTIMPL;
2515}

◆ d3drm_mesh_GetClassName()

static HRESULT WINAPI d3drm_mesh_GetClassName ( IDirect3DRMMesh *  iface,
DWORD *  size,
char *  name 
)
static

Definition at line 2485 of file meshbuilder.c.

2486{
2487 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2488
2489 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
2490
2491 return d3drm_object_get_class_name(&mesh->obj, size, name);
2492}

◆ d3drm_mesh_GetGroup()

static HRESULT WINAPI d3drm_mesh_GetGroup ( IDirect3DRMMesh *  iface,
D3DRMGROUPINDEX  id,
unsigned *  vertex_count,
unsigned *  face_count,
unsigned *  vertex_per_face,
DWORD *  face_data_size,
unsigned *  face_data 
)
static

Definition at line 2691 of file meshbuilder.c.

2693{
2694 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2695
2696 TRACE("iface %p, id %#lx, vertex_count %p, face_count %p, vertex_per_face %p, face_data_size %p, face_data %p.\n",
2697 iface, id, vertex_count, face_count, vertex_per_face, face_data_size,face_data);
2698
2699 if (id >= mesh->nb_groups)
2700 return D3DRMERR_BADVALUE;
2701
2702 if (vertex_count)
2703 *vertex_count = mesh->groups[id].nb_vertices;
2704 if (face_count)
2705 *face_count = mesh->groups[id].nb_faces;
2706 if (vertex_per_face)
2707 *vertex_per_face = mesh->groups[id].vertex_per_face;
2708 if (face_data_size)
2709 *face_data_size = mesh->groups[id].face_data_size;
2710 if (face_data)
2711 memcpy(face_data, mesh->groups[id].face_data, mesh->groups[id].face_data_size * sizeof(*face_data));
2712
2713 return D3DRM_OK;
2714}
GLuint id
Definition: glext.h:5910

◆ d3drm_mesh_GetGroupColor()

static D3DCOLOR WINAPI d3drm_mesh_GetGroupColor ( IDirect3DRMMesh *  iface,
D3DRMGROUPINDEX  id 
)
static

Definition at line 2738 of file meshbuilder.c.

2739{
2740 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2741
2742 TRACE("iface %p, id %#lx.\n", iface, id);
2743
2744 return mesh->groups[id].color;
2745}

◆ d3drm_mesh_GetGroupCount()

static UINT WINAPI d3drm_mesh_GetGroupCount ( IDirect3DRMMesh *  iface)
static

Definition at line 2682 of file meshbuilder.c.

2683{
2684 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2685
2686 TRACE("iface %p.\n", iface);
2687
2688 return mesh->nb_groups;
2689}

◆ d3drm_mesh_GetGroupMapping()

static D3DRMMAPPING WINAPI d3drm_mesh_GetGroupMapping ( IDirect3DRMMesh *  iface,
D3DRMGROUPINDEX  id 
)
static

Definition at line 2747 of file meshbuilder.c.

2748{
2749 FIXME("iface %p, id %#lx stub!\n", iface, id);
2750
2751 return 0;
2752}

◆ d3drm_mesh_GetGroupMaterial()

static HRESULT WINAPI d3drm_mesh_GetGroupMaterial ( IDirect3DRMMesh *  iface,
D3DRMGROUPINDEX  id,
IDirect3DRMMaterial **  material 
)
static

Definition at line 2760 of file meshbuilder.c.

2762{
2763 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2764
2765 TRACE("iface %p, id %#lx, material %p.\n", iface, id, material);
2766
2767 if (id >= mesh->nb_groups)
2768 return D3DRMERR_BADVALUE;
2769
2770 if (!material)
2771 return E_POINTER;
2772
2773 if (mesh->groups[id].material)
2774 IDirect3DRMTexture_QueryInterface(mesh->groups[id].material, &IID_IDirect3DRMMaterial, (void **)material);
2775 else
2776 *material = NULL;
2777
2778 return D3DRM_OK;
2779}

◆ d3drm_mesh_GetGroupQuality()

static D3DRMRENDERQUALITY WINAPI d3drm_mesh_GetGroupQuality ( IDirect3DRMMesh *  iface,
D3DRMGROUPINDEX  id 
)
static

Definition at line 2753 of file meshbuilder.c.

2754{
2755 FIXME("iface %p, id %#lx stub!\n", iface, id);
2756
2757 return 0;
2758}

◆ d3drm_mesh_GetGroupTexture()

static HRESULT WINAPI d3drm_mesh_GetGroupTexture ( IDirect3DRMMesh *  iface,
D3DRMGROUPINDEX  id,
IDirect3DRMTexture **  texture 
)
static

Definition at line 2781 of file meshbuilder.c.

2783{
2784 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2785
2786 TRACE("iface %p, id %#lx, texture %p.\n", iface, id, texture);
2787
2788 if (id >= mesh->nb_groups)
2789 return D3DRMERR_BADVALUE;
2790
2791 if (!texture)
2792 return E_POINTER;
2793
2794 if (mesh->groups[id].texture)
2795 IDirect3DRMTexture_QueryInterface(mesh->groups[id].texture, &IID_IDirect3DRMTexture, (void **)texture);
2796 else
2797 *texture = NULL;
2798
2799 return D3DRM_OK;
2800}

◆ d3drm_mesh_GetName()

static HRESULT WINAPI d3drm_mesh_GetName ( IDirect3DRMMesh *  iface,
DWORD *  size,
char *  name 
)
static

Definition at line 2476 of file meshbuilder.c.

2477{
2478 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2479
2480 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
2481
2482 return d3drm_object_get_name(&mesh->obj, size, name);
2483}

◆ d3drm_mesh_GetVertices()

static HRESULT WINAPI d3drm_mesh_GetVertices ( IDirect3DRMMesh *  iface,
D3DRMGROUPINDEX  group_id,
DWORD  start_idx,
DWORD  count,
D3DRMVERTEX *  vertices 
)
static

Definition at line 2716 of file meshbuilder.c.

2718{
2719 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2720
2721 TRACE("iface %p, group_id %#lx, start_idx %lu, count %lu, vertices %p.\n",
2722 iface, group_id, start_idx, count, vertices);
2723
2724 if (group_id >= mesh->nb_groups)
2725 return D3DRMERR_BADVALUE;
2726
2727 if ((start_idx + count - 1) >= mesh->groups[group_id].nb_vertices)
2728 return D3DRMERR_BADVALUE;
2729
2730 if (!vertices)
2731 return E_POINTER;
2732
2733 memcpy(vertices, mesh->groups[group_id].vertices + start_idx, count * sizeof(*vertices));
2734
2735 return D3DRM_OK;
2736}
struct vertex * vertices
Definition: mesh.c:191

◆ d3drm_mesh_QueryInterface()

static HRESULT WINAPI d3drm_mesh_QueryInterface ( IDirect3DRMMesh *  iface,
REFIID  riid,
void **  out 
)
static

Definition at line 2360 of file meshbuilder.c.

2361{
2362 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
2363
2364 if (IsEqualGUID(riid, &IID_IDirect3DRMMesh)
2365 || IsEqualGUID(riid, &IID_IDirect3DRMVisual)
2366 || IsEqualGUID(riid, &IID_IDirect3DRMObject)
2368 {
2370 *out = iface;
2371 return S_OK;
2372 }
2373
2374 WARN("%s not implemented, returning E_NOINTERFACE.\n", debugstr_guid(riid));
2375
2376 *out = NULL;
2377 return E_NOINTERFACE;
2378}
#define IDirect3DRMMesh_AddRef(p)
Definition: d3drmobj.h:1940

◆ d3drm_mesh_Release()

static ULONG WINAPI d3drm_mesh_Release ( IDirect3DRMMesh *  iface)
static

Definition at line 2390 of file meshbuilder.c.

2391{
2392 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2393 ULONG refcount = InterlockedDecrement(&mesh->ref);
2394
2395 TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
2396
2397 if (!refcount)
2398 {
2399 DWORD i;
2400
2401 d3drm_object_cleanup((IDirect3DRMObject *)iface, &mesh->obj);
2402 IDirect3DRM_Release(mesh->d3drm);
2403 for (i = 0; i < mesh->nb_groups; ++i)
2404 {
2405 free(mesh->groups[i].vertices);
2406 free(mesh->groups[i].face_data);
2407 if (mesh->groups[i].material)
2408 IDirect3DRMMaterial2_Release(mesh->groups[i].material);
2409 if (mesh->groups[i].texture)
2410 IDirect3DRMTexture3_Release(mesh->groups[i].texture);
2411 }
2412 free(mesh->groups);
2413 free(mesh);
2414 }
2415
2416 return refcount;
2417}

◆ d3drm_mesh_Scale()

static HRESULT WINAPI d3drm_mesh_Scale ( IDirect3DRMMesh *  iface,
D3DVALUE  sx,
D3DVALUE  sy,
D3DVALUE  sz 
)
static

Definition at line 2494 of file meshbuilder.c.

2496{
2497 FIXME("iface %p, sx %.8e, sy %.8e, sz %.8e stub!\n", iface, sx, sy, sz);
2498
2499 return E_NOTIMPL;
2500}

◆ d3drm_mesh_SetAppData()

static HRESULT WINAPI d3drm_mesh_SetAppData ( IDirect3DRMMesh *  iface,
DWORD  data 
)
static

Definition at line 2447 of file meshbuilder.c.

2448{
2449 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2450
2451 TRACE("iface %p, data %#lx.\n", iface, data);
2452
2453 mesh->obj.appdata = data;
2454
2455 return D3DRM_OK;
2456}

◆ d3drm_mesh_SetGroupColor()

static HRESULT WINAPI d3drm_mesh_SetGroupColor ( IDirect3DRMMesh *  iface,
D3DRMGROUPINDEX  id,
D3DCOLOR  color 
)
static

Definition at line 2596 of file meshbuilder.c.

2597{
2598 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2599
2600 TRACE("iface %p, id %#lx, color 0x%08lx.\n", iface, id, color);
2601
2602 if (id >= mesh->nb_groups)
2603 return D3DRMERR_BADVALUE;
2604
2605 mesh->groups[id].color = color;
2606
2607 return D3DRM_OK;
2608}

◆ d3drm_mesh_SetGroupColorRGB()

static HRESULT WINAPI d3drm_mesh_SetGroupColorRGB ( IDirect3DRMMesh *  iface,
D3DRMGROUPINDEX  id,
D3DVALUE  red,
D3DVALUE  green,
D3DVALUE  blue 
)
static

Definition at line 2610 of file meshbuilder.c.

2612{
2613 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2614
2615 TRACE("iface %p, id %#lx, red %.8e, green %.8e, blue %.8e.\n", iface, id, red, green, blue);
2616
2617 if (id >= mesh->nb_groups)
2618 return D3DRMERR_BADVALUE;
2619
2620 d3drm_set_color(&mesh->groups[id].color, red, green, blue, 1.0f);
2621
2622 return D3DRM_OK;
2623}

◆ d3drm_mesh_SetGroupMapping()

static HRESULT WINAPI d3drm_mesh_SetGroupMapping ( IDirect3DRMMesh *  iface,
D3DRMGROUPINDEX  id,
D3DRMMAPPING  value 
)
static

Definition at line 2625 of file meshbuilder.c.

2626{
2627 FIXME("iface %p, id %#lx, value %#lx stub!\n", iface, id, value);
2628
2629 return E_NOTIMPL;
2630}
Definition: pdh_main.c:64

◆ d3drm_mesh_SetGroupMaterial()

static HRESULT WINAPI d3drm_mesh_SetGroupMaterial ( IDirect3DRMMesh *  iface,
D3DRMGROUPINDEX  id,
IDirect3DRMMaterial *  material 
)
static

Definition at line 2639 of file meshbuilder.c.

2641{
2642 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2643
2644 TRACE("iface %p, id %#lx, material %p.\n", iface, id, material);
2645
2646 if (id >= mesh->nb_groups)
2647 return D3DRMERR_BADVALUE;
2648
2649 if (mesh->groups[id].material)
2650 IDirect3DRMMaterial2_Release(mesh->groups[id].material);
2651
2652 mesh->groups[id].material = (IDirect3DRMMaterial2 *)material;
2653
2654 if (material)
2655 IDirect3DRMMaterial2_AddRef(mesh->groups[id].material);
2656
2657 return D3DRM_OK;
2658}
#define IDirect3DRMMaterial2_AddRef(p)
Definition: d3drmobj.h:3731

◆ d3drm_mesh_SetGroupQuality()

static HRESULT WINAPI d3drm_mesh_SetGroupQuality ( IDirect3DRMMesh *  iface,
D3DRMGROUPINDEX  id,
D3DRMRENDERQUALITY  value 
)
static

Definition at line 2632 of file meshbuilder.c.

2633{
2634 FIXME("iface %p, id %#lx, value %#lx stub!\n", iface, id, value);
2635
2636 return E_NOTIMPL;
2637}

◆ d3drm_mesh_SetGroupTexture()

static HRESULT WINAPI d3drm_mesh_SetGroupTexture ( IDirect3DRMMesh *  iface,
D3DRMGROUPINDEX  id,
IDirect3DRMTexture *  texture 
)
static

Definition at line 2660 of file meshbuilder.c.

2662{
2663 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2664
2665 TRACE("iface %p, id %#lx, texture %p.\n", iface, id, texture);
2666
2667 if (id >= mesh->nb_groups)
2668 return D3DRMERR_BADVALUE;
2669
2670 if (mesh->groups[id].texture)
2671 IDirect3DRMTexture3_Release(mesh->groups[id].texture);
2672
2673 if (!texture)
2674 {
2675 mesh->groups[id].texture = NULL;
2676 return D3DRM_OK;
2677 }
2678
2679 return IDirect3DRMTexture3_QueryInterface(texture, &IID_IDirect3DRMTexture, (void **)&mesh->groups[id].texture);
2680}

◆ d3drm_mesh_SetName()

static HRESULT WINAPI d3drm_mesh_SetName ( IDirect3DRMMesh *  iface,
const char *  name 
)
static

Definition at line 2467 of file meshbuilder.c.

2468{
2469 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2470
2471 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
2472
2473 return d3drm_object_set_name(&mesh->obj, name);
2474}

◆ d3drm_mesh_SetVertices()

static HRESULT WINAPI d3drm_mesh_SetVertices ( IDirect3DRMMesh *  iface,
D3DRMGROUPINDEX  group_id,
unsigned int  start_idx,
unsigned int  count,
D3DRMVERTEX *  values 
)
static

Definition at line 2574 of file meshbuilder.c.

2576{
2577 struct d3drm_mesh *mesh = impl_from_IDirect3DRMMesh(iface);
2578
2579 TRACE("iface %p, group_id %#lx, start_idx %u, count %u, values %p.\n",
2580 iface, group_id, start_idx, count, values);
2581
2582 if (group_id >= mesh->nb_groups)
2583 return D3DRMERR_BADVALUE;
2584
2585 if ((start_idx + count - 1) >= mesh->groups[group_id].nb_vertices)
2586 return D3DRMERR_BADVALUE;
2587
2588 if (!values)
2589 return E_POINTER;
2590
2591 memcpy(mesh->groups[group_id].vertices + start_idx, values, count * sizeof(*values));
2592
2593 return D3DRM_OK;
2594}
GLboolean GLenum GLenum GLvoid * values
Definition: glext.h:5666

◆ d3drm_mesh_Translate()

static HRESULT WINAPI d3drm_mesh_Translate ( IDirect3DRMMesh *  iface,
D3DVALUE  tx,
D3DVALUE  ty,
D3DVALUE  tz 
)
static

Definition at line 2502 of file meshbuilder.c.

2504{
2505 FIXME("iface %p, tx %.8e, ty %.8e, tz %.8e stub!\n", iface, tx, ty, tz);
2506
2507 return E_NOTIMPL;
2508}

◆ d3drm_wrap_AddDestroyCallback()

static HRESULT WINAPI d3drm_wrap_AddDestroyCallback ( IDirect3DRMWrap *  iface,
D3DRMOBJECTCALLBACK  cb,
void *  ctx 
)
static

Definition at line 2911 of file meshbuilder.c.

2913{
2914 struct d3drm_wrap *wrap = impl_from_IDirect3DRMWrap(iface);
2915
2916 TRACE("iface %p, cb %p, ctx %p.\n", iface, cb, ctx);
2917
2919}
#define wrap(journal, var)
Definition: recovery.c:207
static struct d3drm_wrap * impl_from_IDirect3DRMWrap(IDirect3DRMWrap *iface)
Definition: meshbuilder.c:302

◆ d3drm_wrap_AddRef()

static ULONG WINAPI d3drm_wrap_AddRef ( IDirect3DRMWrap *  iface)
static

Definition at line 2877 of file meshbuilder.c.

2878{
2879 struct d3drm_wrap *wrap = impl_from_IDirect3DRMWrap(iface);
2880 ULONG refcount = InterlockedIncrement(&wrap->ref);
2881
2882 TRACE("%p increasing refcount to %lu.\n", iface, refcount);
2883
2884 return refcount;
2885}

◆ d3drm_wrap_Apply()

static HRESULT WINAPI d3drm_wrap_Apply ( IDirect3DRMWrap *  iface,
IDirect3DRMObject *  object 
)
static

Definition at line 2989 of file meshbuilder.c.

2990{
2991 FIXME("iface %p, object %p.\n", iface, object);
2992
2993 return E_NOTIMPL;
2994}

◆ d3drm_wrap_ApplyRelative()

static HRESULT WINAPI d3drm_wrap_ApplyRelative ( IDirect3DRMWrap *  iface,
IDirect3DRMFrame *  frame,
IDirect3DRMObject *  object 
)
static

Definition at line 2996 of file meshbuilder.c.

2998{
2999 FIXME("iface %p, frame %p, object %p.\n", iface, frame, object);
3000
3001 return E_NOTIMPL;
3002}

◆ d3drm_wrap_Clone()

static HRESULT WINAPI d3drm_wrap_Clone ( IDirect3DRMWrap *  iface,
IUnknown *  outer,
REFIID  iid,
void **  out 
)
static

Definition at line 2903 of file meshbuilder.c.

2905{
2906 FIXME("iface %p, outer %p, iid %s, out %p stub!\n", iface, outer, debugstr_guid(iid), out);
2907
2908 return E_NOTIMPL;
2909}

◆ d3drm_wrap_create()

HRESULT d3drm_wrap_create ( struct d3drm_wrap **  wrap,
IDirect3DRM *  d3drm 
)

Definition at line 3022 of file meshbuilder.c.

3023{
3024 static const char classname[] = "";
3025 struct d3drm_wrap *object;
3026
3027 TRACE("wrap %p, d3drm %p.\n", wrap, d3drm);
3028
3029 if (!(object = calloc(1, sizeof(*object))))
3030 return E_OUTOFMEMORY;
3031
3032 object->IDirect3DRMWrap_iface.lpVtbl = &d3drm_wrap_vtbl;
3033 object->ref = 1;
3034
3036
3037 *wrap = object;
3038
3039 return S_OK;
3040}
static const struct IDirect3DRMWrapVtbl d3drm_wrap_vtbl
Definition: meshbuilder.c:3004

Referenced by d3drm1_CreateWrap(), d3drm3_CreateWrap(), and d3drm_create_wrap_object().

◆ d3drm_wrap_DeleteDestroyCallback()

static HRESULT WINAPI d3drm_wrap_DeleteDestroyCallback ( IDirect3DRMWrap *  iface,
D3DRMOBJECTCALLBACK  cb,
void *  ctx 
)
static

Definition at line 2921 of file meshbuilder.c.

2923{
2924 struct d3drm_wrap *wrap = impl_from_IDirect3DRMWrap(iface);
2925
2926 TRACE("iface %p, cb %p, ctx %p.\n", iface, cb, ctx);
2927
2929}

◆ d3drm_wrap_GetAppData()

static DWORD WINAPI d3drm_wrap_GetAppData ( IDirect3DRMWrap *  iface)
static

Definition at line 2942 of file meshbuilder.c.

2943{
2944 struct d3drm_wrap *wrap = impl_from_IDirect3DRMWrap(iface);
2945
2946 TRACE("iface %p.\n", iface);
2947
2948 return wrap->obj.appdata;
2949}

◆ d3drm_wrap_GetClassName()

static HRESULT WINAPI d3drm_wrap_GetClassName ( IDirect3DRMWrap *  iface,
DWORD *  size,
char *  name 
)
static

Definition at line 2969 of file meshbuilder.c.

2970{
2971 struct d3drm_wrap *wrap = impl_from_IDirect3DRMWrap(iface);
2972
2973 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
2974
2975 return d3drm_object_get_class_name(&wrap->obj, size, name);
2976}

◆ d3drm_wrap_GetName()

static HRESULT WINAPI d3drm_wrap_GetName ( IDirect3DRMWrap *  iface,
DWORD *  size,
char *  name 
)
static

Definition at line 2960 of file meshbuilder.c.

2961{
2962 struct d3drm_wrap *wrap = impl_from_IDirect3DRMWrap(iface);
2963
2964 TRACE("iface %p, size %p, name %p.\n", iface, size, name);
2965
2966 return d3drm_object_get_name(&wrap->obj, size, name);
2967}

◆ d3drm_wrap_Init()

static HRESULT WINAPI d3drm_wrap_Init ( IDirect3DRMWrap *  iface,
D3DRMWRAPTYPE  type,
IDirect3DRMFrame *  reference,
D3DVALUE  ox,
D3DVALUE  oy,
D3DVALUE  oz,
D3DVALUE  dx,
D3DVALUE  dy,
D3DVALUE  dz,
D3DVALUE  ux,
D3DVALUE  uy,
D3DVALUE  uz,
D3DVALUE  ou,
D3DVALUE  ov,
D3DVALUE  su,
D3DVALUE  sv 
)
static

Definition at line 2978 of file meshbuilder.c.

2981{
2982 FIXME("iface %p, type %d, reference frame %p, ox %.8e, oy %.8e, oz %.8e, dx %.8e, dy %.8e, dz %.8e, ux %.8e, "
2983 "uy %.8e, uz %.8e, ou %.8e, ov %.8e, su %.8e, sv %.8e.\n", iface, type, reference, ox, oy, oz, dx, dy, dz,
2984 ux, uy, uz, ou, ov, su, sv);
2985
2986 return E_NOTIMPL;
2987}
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLint reference
Definition: glext.h:11729
GLint dy
Definition: linetemp.h:97
GLint dx
Definition: linetemp.h:97

◆ d3drm_wrap_QueryInterface()

static HRESULT WINAPI d3drm_wrap_QueryInterface ( IDirect3DRMWrap *  iface,
REFIID  riid,
void **  out 
)
static

Definition at line 2858 of file meshbuilder.c.

2859{
2860 TRACE("iface %p, riid %s, out %p.\n", iface, debugstr_guid(riid), out);
2861
2862 if (IsEqualGUID(riid, &IID_IDirect3DRMWrap)
2863 || IsEqualGUID(riid, &IID_IDirect3DRMObject)
2865 {
2867 *out = iface;
2868 return S_OK;
2869 }
2870
2871 WARN("%s not implemented.\n", debugstr_guid(riid));
2872
2873 *out = NULL;
2875}
#define IDirect3DRMWrap_AddRef(p)
Definition: d3drmobj.h:3589
#define CLASS_E_CLASSNOTAVAILABLE
Definition: winerror.h:3772

◆ d3drm_wrap_Release()

static ULONG WINAPI d3drm_wrap_Release ( IDirect3DRMWrap *  iface)
static

Definition at line 2887 of file meshbuilder.c.

2888{
2889 struct d3drm_wrap *wrap = impl_from_IDirect3DRMWrap(iface);
2890 ULONG refcount = InterlockedDecrement(&wrap->ref);
2891
2892 TRACE("%p decreasing refcount to %lu.\n", iface, refcount);
2893
2894 if (!refcount)
2895 {
2896 d3drm_object_cleanup((IDirect3DRMObject *)iface, &wrap->obj);
2897 free(wrap);
2898 }
2899
2900 return refcount;
2901}

◆ d3drm_wrap_SetAppData()

static HRESULT WINAPI d3drm_wrap_SetAppData ( IDirect3DRMWrap *  iface,
DWORD  data 
)
static

Definition at line 2931 of file meshbuilder.c.

2932{
2933 struct d3drm_wrap *wrap = impl_from_IDirect3DRMWrap(iface);
2934
2935 TRACE("iface %p, data %#lx.\n", iface, data);
2936
2937 wrap->obj.appdata = data;
2938
2939 return D3DRM_OK;
2940}

◆ d3drm_wrap_SetName()

static HRESULT WINAPI d3drm_wrap_SetName ( IDirect3DRMWrap *  iface,
const char *  name 
)
static

Definition at line 2951 of file meshbuilder.c.

2952{
2953 struct d3drm_wrap *wrap = impl_from_IDirect3DRMWrap(iface);
2954
2955 TRACE("iface %p, name %s.\n", iface, debugstr_a(name));
2956
2957 return d3drm_object_set_name(&wrap->obj, name);
2958}

◆ impl_from_IDirect3DRMMesh()

◆ impl_from_IDirect3DRMMeshBuilder2()

◆ impl_from_IDirect3DRMMeshBuilder3()

◆ impl_from_IDirect3DRMWrap()

static struct d3drm_wrap * impl_from_IDirect3DRMWrap ( IDirect3DRMWrap *  iface)
inlinestatic

◆ load_mesh_data()

HRESULT load_mesh_data ( IDirect3DRMMeshBuilder3 *  iface,
IDirectXFileData *  pData,
D3DRMLOADTEXTURECALLBACK  load_texture_proc,
void *  arg 
)

Definition at line 1022 of file meshbuilder.c.

1024{
1026 IDirectXFileData *pData2 = NULL;
1027 const GUID* guid;
1028 DWORD size;
1029 BYTE *ptr;
1030 HRESULT hr;
1032 DWORD* faces_vertex_idx_data = NULL;
1033 DWORD* faces_vertex_idx_ptr;
1034 DWORD faces_vertex_idx_size;
1035 DWORD* faces_normal_idx_data = NULL;
1036 DWORD* faces_normal_idx_ptr = NULL;
1037 DWORD* faces_data_ptr;
1038 DWORD faces_data_size = 0;
1039 DWORD i;
1040
1041 TRACE("(%p)->(%p)\n", mesh_builder, pData);
1042
1044 if (hr != DXFILE_OK)
1045 return hr;
1046 if (size)
1047 {
1048 char *name;
1049
1050 if (!(name = malloc(size)))
1051 return E_OUTOFMEMORY;
1052
1055 free(name);
1056 if (hr != DXFILE_OK)
1057 return hr;
1058 }
1059
1060 TRACE("Mesh name is %s\n", debugstr_a(mesh_builder->obj.name));
1061
1062 mesh_builder->nb_normals = 0;
1063
1064 hr = IDirectXFileData_GetData(pData, NULL, &size, (void**)&ptr);
1065 if (hr != DXFILE_OK)
1066 goto end;
1067
1068 mesh_builder->nb_vertices = *(DWORD*)ptr;
1069 mesh_builder->nb_faces = *(DWORD*)(ptr + sizeof(DWORD) + mesh_builder->nb_vertices * sizeof(D3DVECTOR));
1070 faces_vertex_idx_size = size - sizeof(DWORD) - mesh_builder->nb_vertices * sizeof(D3DVECTOR) - sizeof(DWORD);
1071
1072 TRACE("Mesh: nb_vertices = %Iu, nb_faces = %ld, faces_vertex_idx_size = %ld\n", mesh_builder->nb_vertices,
1073 mesh_builder->nb_faces, faces_vertex_idx_size);
1074
1075 if (!d3drm_array_reserve((void **)&mesh_builder->vertices, &mesh_builder->vertices_size, mesh_builder->nb_vertices,
1076 sizeof(*mesh_builder->vertices)))
1077 {
1078 hr = E_OUTOFMEMORY;
1079 goto end;
1080 }
1081 memcpy(mesh_builder->vertices, ptr + sizeof(DWORD), mesh_builder->nb_vertices * sizeof(D3DVECTOR));
1082
1083 faces_vertex_idx_ptr = faces_vertex_idx_data = malloc(faces_vertex_idx_size);
1084 memcpy(faces_vertex_idx_data, ptr + sizeof(DWORD) + mesh_builder->nb_vertices * sizeof(D3DVECTOR) + sizeof(DWORD),
1085 faces_vertex_idx_size);
1086
1087 /* Each vertex index will have its normal index counterpart so just allocate twice the size */
1088 mesh_builder->pFaceData = malloc(faces_vertex_idx_size * 2);
1089 faces_data_ptr = (DWORD*)mesh_builder->pFaceData;
1090
1091 while (1)
1092 {
1093 IDirectXFileObject *object;
1094
1097 {
1098 TRACE("No more object\n");
1099 break;
1100 }
1101 if (hr != DXFILE_OK)
1102 goto end;
1103
1104 hr = IDirectXFileObject_QueryInterface(object, &IID_IDirectXFileData, (void**)&pData2);
1106 if (hr != DXFILE_OK)
1107 goto end;
1108
1109 hr = IDirectXFileData_GetType(pData2, &guid);
1110 if (hr != DXFILE_OK)
1111 goto end;
1112
1113 TRACE("Found object type whose GUID = %s\n", debugstr_guid(guid));
1114
1115 if (IsEqualGUID(guid, &TID_D3DRMMeshNormals))
1116 {
1117 DWORD nb_faces_normals;
1118 DWORD faces_normal_idx_size;
1119
1120 hr = IDirectXFileData_GetData(pData2, NULL, &size, (void**)&ptr);
1121 if (hr != DXFILE_OK)
1122 goto end;
1123
1124 mesh_builder->nb_normals = *(DWORD*)ptr;
1125 nb_faces_normals = *(DWORD*)(ptr + sizeof(DWORD) + mesh_builder->nb_normals * sizeof(D3DVECTOR));
1126
1127 TRACE("MeshNormals: nb_normals = %Iu, nb_faces_normals = %ld\n", mesh_builder->nb_normals, nb_faces_normals);
1128 if (nb_faces_normals != mesh_builder->nb_faces)
1129 WARN("nb_face_normals (%ld) != nb_faces (%ld)\n", nb_faces_normals, mesh_builder->nb_faces);
1130
1131 if (!d3drm_array_reserve((void **)&mesh_builder->normals, &mesh_builder->normals_size,
1132 mesh_builder->nb_normals, sizeof(*mesh_builder->normals)))
1133 {
1134 hr = E_OUTOFMEMORY;
1135 goto end;
1136 }
1137 memcpy(mesh_builder->normals, ptr + sizeof(DWORD), mesh_builder->nb_normals * sizeof(D3DVECTOR));
1138
1139 faces_normal_idx_size = size - (2 * sizeof(DWORD) + mesh_builder->nb_normals * sizeof(D3DVECTOR));
1140 faces_normal_idx_ptr = faces_normal_idx_data = malloc(faces_normal_idx_size);
1141 memcpy(faces_normal_idx_data, ptr + sizeof(DWORD) + mesh_builder->nb_normals * sizeof(D3DVECTOR)
1142 + sizeof(DWORD), faces_normal_idx_size);
1143 }
1144 else if (IsEqualGUID(guid, &TID_D3DRMMeshTextureCoords))
1145 {
1146 hr = IDirectXFileData_GetData(pData2, NULL, &size, (void**)&ptr);
1147 if (hr != DXFILE_OK)
1148 goto end;
1149
1150 mesh_builder->nb_coords2d = *(DWORD*)ptr;
1151
1152 TRACE("MeshTextureCoords: nb_coords2d = %ld\n", mesh_builder->nb_coords2d);
1153
1154 mesh_builder->pCoords2d = calloc(mesh_builder->nb_coords2d, sizeof(*mesh_builder->pCoords2d));
1155 memcpy(mesh_builder->pCoords2d, ptr + sizeof(DWORD), mesh_builder->nb_coords2d * sizeof(*mesh_builder->pCoords2d));
1156 }
1157 else if (IsEqualGUID(guid, &TID_D3DRMMeshMaterialList))
1158 {
1160 DWORD nb_face_indices;
1161 DWORD data_size;
1162 IDirectXFileObject *child;
1163 DWORD i = 0;
1164 float* values;
1165 struct d3drm_texture *texture_object;
1166
1167 TRACE("Process MeshMaterialList\n");
1168
1169 hr = IDirectXFileData_GetData(pData2, NULL, &size, (void**)&ptr);
1170 if (hr != DXFILE_OK)
1171 goto end;
1172
1173 nb_materials = *(DWORD*)ptr;
1174 nb_face_indices = *(DWORD*)(ptr + sizeof(DWORD));
1175 data_size = 2 * sizeof(DWORD) + nb_face_indices * sizeof(DWORD);
1176
1177 TRACE("nMaterials = %lu, nFaceIndexes = %lu\n", nb_materials, nb_face_indices);
1178
1179 if (size != data_size)
1180 WARN("Returned size %lu does not match expected one %lu\n", size, data_size);
1181
1182 if (!(mesh_builder->material_indices = calloc(nb_face_indices,
1183 sizeof(*mesh_builder->material_indices))))
1184 goto end;
1185 memcpy(mesh_builder->material_indices, ptr + 2 * sizeof(DWORD),
1186 nb_face_indices * sizeof(*mesh_builder->material_indices));
1187
1188 if (!(mesh_builder->materials = calloc(nb_materials, sizeof(*mesh_builder->materials))))
1189 {
1190 free(mesh_builder->material_indices);
1191 goto end;
1192 }
1193 mesh_builder->nb_materials = nb_materials;
1194
1195 while (SUCCEEDED(hr = IDirectXFileData_GetNextObject(pData2, &child)) && (i < nb_materials))
1196 {
1197 IDirectXFileData *data;
1198 IDirectXFileDataReference *reference;
1199 IDirectXFileObject *material_child;
1200 struct d3drm_material *object;
1201
1202 hr = IDirectXFileObject_QueryInterface(child, &IID_IDirectXFileData, (void **)&data);
1203 if (FAILED(hr))
1204 {
1205 hr = IDirectXFileObject_QueryInterface(child, &IID_IDirectXFileDataReference, (void **)&reference);
1207 if (FAILED(hr))
1208 goto end;
1209
1212 if (FAILED(hr))
1213 goto end;
1214 }
1215 else
1216 {
1218 }
1219
1220 hr = d3drm_material_create(&object, mesh_builder->d3drm);
1221 if (FAILED(hr))
1222 {
1224 goto end;
1225 }
1226 mesh_builder->materials[i].material = &object->IDirect3DRMMaterial2_iface;
1227
1228 hr = IDirectXFileData_GetData(data, NULL, &size, (void**)&ptr);
1229 if (hr != DXFILE_OK)
1230 {
1232 goto end;
1233 }
1234
1235 if (size != 44)
1236 WARN("Material size %lu does not match expected one %u\n", size, 44);
1237
1238 values = (float*)ptr;
1239
1240 d3drm_set_color(&mesh_builder->materials[i].color, values[0], values[1], values[2], values[3]);
1241
1242 IDirect3DRMMaterial2_SetAmbient(mesh_builder->materials[i].material, values[0], values [1], values[2]); /* Alpha ignored */
1243 IDirect3DRMMaterial2_SetPower(mesh_builder->materials[i].material, values[4]);
1244 IDirect3DRMMaterial2_SetSpecular(mesh_builder->materials[i].material, values[5], values[6], values[7]);
1245 IDirect3DRMMaterial2_SetEmissive(mesh_builder->materials[i].material, values[8], values[9], values[10]);
1246
1247 mesh_builder->materials[i].texture = NULL;
1248
1249 hr = IDirectXFileData_GetNextObject(data, &material_child);
1250 if (hr == S_OK)
1251 {
1252 IDirectXFileData *data;
1253 char **filename;
1254
1255 if (FAILED(hr = IDirectXFileObject_QueryInterface(material_child,
1256 &IID_IDirectXFileData, (void **)&data)))
1257 {
1258 IDirectXFileDataReference *reference;
1259
1261 &IID_IDirectXFileDataReference, (void **)&reference)))
1262 {
1265 }
1266 }
1267 IDirectXFileObject_Release(material_child);
1268 if (FAILED(hr))
1269 goto end;
1270
1272 if (hr != DXFILE_OK)
1273 goto end;
1274 if (!IsEqualGUID(guid, &TID_D3DRMTextureFilename))
1275 {
1276 WARN("Not a texture filename\n");
1277 goto end;
1278 }
1279
1280 size = 4;
1282 if (SUCCEEDED(hr))
1283 {
1284 if (load_texture_proc)
1285 {
1286 IDirect3DRMTexture *texture;
1287
1288 hr = load_texture_proc(*filename, arg, &texture);
1289 if (SUCCEEDED(hr))
1290 {
1291 hr = IDirect3DTexture_QueryInterface(texture, &IID_IDirect3DRMTexture3,
1292 (void **)&mesh_builder->materials[i].texture);
1294 }
1295 }
1296 else
1297 {
1298 HANDLE file;
1299
1300 /* If the texture file is not found, no texture is associated with the material */
1303 {
1305 if (FAILED(hr = d3drm_texture_create(&texture_object, NULL)))
1306 {
1308 goto end;
1309 }
1310 mesh_builder->materials[i].texture = &texture_object->IDirect3DRMTexture3_iface;
1311 }
1312 }
1313 }
1315 }
1316 else if (hr != DXFILEERR_NOMOREOBJECTS)
1317 {
1318 goto end;
1319 }
1320 hr = S_OK;
1321
1323 i++;
1324 }
1325 if (hr == S_OK)
1326 {
1328 WARN("Found more sub-objects than expected\n");
1329 }
1330 else if (hr != DXFILEERR_NOMOREOBJECTS)
1331 {
1332 goto end;
1333 }
1334 hr = S_OK;
1335 }
1336 else
1337 {
1338 FIXME("Unknown GUID %s, ignoring...\n", debugstr_guid(guid));
1339 }
1340
1342 pData2 = NULL;
1343 }
1344
1345 if (!mesh_builder->nb_normals)
1346 {
1347 /* Allocate normals, one per vertex */
1348 if (!d3drm_array_reserve((void **)&mesh_builder->normals, &mesh_builder->normals_size,
1349 mesh_builder->nb_vertices, sizeof(*mesh_builder->normals)))
1350 goto end;
1351 memset(mesh_builder->normals, 0, mesh_builder->nb_vertices * sizeof(*mesh_builder->normals));
1352 }
1353
1354 for (i = 0; i < mesh_builder->nb_faces; i++)
1355 {
1356 DWORD j;
1357 DWORD nb_face_indexes;
1358 D3DVECTOR face_normal;
1359
1360 if (faces_vertex_idx_size < sizeof(DWORD))
1361 WARN("Not enough data to read number of indices of face %ld\n", i);
1362
1363 nb_face_indexes = *(faces_data_ptr + faces_data_size++) = *(faces_vertex_idx_ptr++);
1364 faces_vertex_idx_size--;
1365 if (faces_normal_idx_data && (*(faces_normal_idx_ptr++) != nb_face_indexes))
1366 WARN("Faces indices number mismatch\n");
1367
1368 if (faces_vertex_idx_size < (nb_face_indexes * sizeof(DWORD)))
1369 WARN("Not enough data to read all indices of face %ld\n", i);
1370
1371 if (!mesh_builder->nb_normals)
1372 {
1373 /* Compute face normal */
1374 if (nb_face_indexes > 2
1375 && faces_vertex_idx_ptr[0] < mesh_builder->nb_vertices
1376 && faces_vertex_idx_ptr[1] < mesh_builder->nb_vertices
1377 && faces_vertex_idx_ptr[2] < mesh_builder->nb_vertices)
1378 {
1379 D3DVECTOR a, b;
1380
1381 D3DRMVectorSubtract(&a, &mesh_builder->vertices[faces_vertex_idx_ptr[2]], &mesh_builder->vertices[faces_vertex_idx_ptr[1]]);
1382 D3DRMVectorSubtract(&b, &mesh_builder->vertices[faces_vertex_idx_ptr[0]], &mesh_builder->vertices[faces_vertex_idx_ptr[1]]);
1383 D3DRMVectorCrossProduct(&face_normal, &a, &b);
1384 D3DRMVectorNormalize(&face_normal);
1385 }
1386 else
1387 {
1388 face_normal.x = 0.0f;
1389 face_normal.y = 0.0f;
1390 face_normal.z = 0.0f;
1391 }
1392 }
1393
1394 for (j = 0; j < nb_face_indexes; j++)
1395 {
1396 /* Copy vertex index */
1397 *(faces_data_ptr + faces_data_size++) = *faces_vertex_idx_ptr;
1398 /* Copy normal index */
1399 if (mesh_builder->nb_normals)
1400 {
1401 /* Read from x file */
1402 *(faces_data_ptr + faces_data_size++) = *(faces_normal_idx_ptr++);
1403 }
1404 else
1405 {
1406 DWORD vertex_idx = *faces_vertex_idx_ptr;
1407 if (vertex_idx >= mesh_builder->nb_vertices)
1408 {
1409 WARN("Found vertex index %lu but only %Iu vertices available => use index 0\n", vertex_idx,
1410 mesh_builder->nb_vertices);
1411 vertex_idx = 0;
1412 }
1413 *(faces_data_ptr + faces_data_size++) = vertex_idx;
1414 /* Add face normal to vertex normal */
1415 D3DRMVectorAdd(&mesh_builder->normals[vertex_idx], &mesh_builder->normals[vertex_idx], &face_normal);
1416 }
1417 faces_vertex_idx_ptr++;
1418 }
1419 faces_vertex_idx_size -= nb_face_indexes;
1420 }
1421
1422 /* Last DWORD must be 0 */
1423 *(faces_data_ptr + faces_data_size++) = 0;
1424
1425 /* Set size (in number of DWORD) of all faces data */
1426 mesh_builder->face_data_size = faces_data_size;
1427
1428 if (!mesh_builder->nb_normals)
1429 {
1430 /* Normalize all normals */
1431 for (i = 0; i < mesh_builder->nb_vertices; i++)
1432 {
1434 }
1435 mesh_builder->nb_normals = mesh_builder->nb_vertices;
1436 }
1437
1438 /* If there is no texture coordinates, generate default texture coordinates (0.0f, 0.0f) for each vertex */
1439 if (!mesh_builder->pCoords2d)
1440 {
1441 mesh_builder->nb_coords2d = mesh_builder->nb_vertices;
1442 mesh_builder->pCoords2d = calloc(mesh_builder->nb_coords2d, sizeof(*mesh_builder->pCoords2d));
1443 for (i = 0; i < mesh_builder->nb_coords2d; ++i)
1444 {
1445 mesh_builder->pCoords2d[i].u = 0.0f;
1446 mesh_builder->pCoords2d[i].v = 0.0f;
1447 }
1448 }
1449
1450 TRACE("Mesh data loaded successfully\n");
1451
1452 ret = D3DRM_OK;
1453
1454end:
1455
1456 free(faces_normal_idx_data);
1457 free(faces_vertex_idx_data);
1458
1459 return ret;
1460}
while(CdLookupNextInitialFileDirent(IrpContext, Fcb, FileContext))
struct _D3DVECTOR D3DVECTOR
#define IDirect3DTexture_QueryInterface(p, a, b)
Definition: d3d.h:584
#define IDirect3DTexture_Release(p)
Definition: d3d.h:586
HRESULT d3drm_texture_create(struct d3drm_texture **texture, IDirect3DRM *d3drm)
Definition: texture.c:1460
HRESULT d3drm_material_create(struct d3drm_material **material, IDirect3DRM *d3drm)
Definition: material.c:279
#define IDirect3DRMMaterial2_SetPower(p, a)
Definition: d3drmobj.h:3743
#define IDirect3DRMMaterial2_SetAmbient(p, a, b, c)
Definition: d3drmobj.h:3749
#define IDirect3DRMMaterial2_SetEmissive(p, a, b, c)
Definition: d3drmobj.h:3745
#define IDirect3DRMMaterial2_SetSpecular(p, a, b, c)
Definition: d3drmobj.h:3744
#define malloc
Definition: debug_ros.c:4
D3DVECTOR *WINAPI D3DRMVectorNormalize(D3DVECTOR *u)
Definition: math.c:196
D3DVECTOR *WINAPI D3DRMVectorAdd(D3DVECTOR *d, D3DVECTOR *s1, D3DVECTOR *s2)
Definition: math.c:141
D3DVECTOR *WINAPI D3DRMVectorCrossProduct(D3DVECTOR *d, D3DVECTOR *s1, D3DVECTOR *s2)
Definition: math.c:167
D3DVECTOR *WINAPI D3DRMVectorSubtract(D3DVECTOR *d, D3DVECTOR *s1, D3DVECTOR *s2)
Definition: math.c:154
#define CloseHandle
Definition: compat.h:739
#define OPEN_EXISTING
Definition: compat.h:775
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define CreateFileA(a, b, c, d, e, f, g)
Definition: compat.h:740
#define GENERIC_READ
Definition: compat.h:135
#define FILE_SHARE_READ
Definition: compat.h:136
#define IDirectXFileObject_Release(p)
Definition: dxfile.h:160
#define IDirectXFileDataReference_Release(p)
Definition: dxfile.h:212
#define IDirectXFileData_GetName(p, a, b)
Definition: dxfile.h:187
#define IDirectXFileObject_QueryInterface(p, a, b)
Definition: dxfile.h:158
#define DXFILEERR_NOMOREOBJECTS
Definition: dxfile.h:291
#define IDirectXFileDataReference_Resolve(p, a)
Definition: dxfile.h:217
#define IDirectXFileData_GetNextObject(p, a)
Definition: dxfile.h:192
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204
#define a
Definition: ke_i.h:78
#define b
Definition: ke_i.h:79
static PVOID ptr
Definition: dispmode.c:27
static HWND child
Definition: cursoricon.c:298
#define DWORD
Definition: nt_native.h:44
#define memset(x, y, z)
Definition: compat.h:39
IDirect3DRMTexture3 IDirect3DRMTexture3_iface
Definition: d3drm_private.h:60
Definition: fci.c:123
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1830
unsigned char BYTE
Definition: xxhash.c:193

Referenced by d3drm_mesh_builder3_Load(), and load_data().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( d3drm  )

Variable Documentation

◆ d3drm_mesh_builder2_vtbl

const struct IDirect3DRMMeshBuilder2Vtbl d3drm_mesh_builder2_vtbl
static

Definition at line 883 of file meshbuilder.c.

Referenced by d3drm_mesh_builder_create().

◆ d3drm_mesh_builder3_vtbl

const struct IDirect3DRMMeshBuilder3Vtbl d3drm_mesh_builder3_vtbl
static

Definition at line 2262 of file meshbuilder.c.

Referenced by d3drm_mesh_builder_create().

◆ d3drm_mesh_vtbl

const struct IDirect3DRMMeshVtbl d3drm_mesh_vtbl
static

Definition at line 2802 of file meshbuilder.c.

Referenced by d3drm_mesh_create().

◆ d3drm_wrap_vtbl

const struct IDirect3DRMWrapVtbl d3drm_wrap_vtbl
static
Initial value:
=
{
}
static HRESULT WINAPI d3drm_wrap_GetClassName(IDirect3DRMWrap *iface, DWORD *size, char *name)
Definition: meshbuilder.c:2969
static HRESULT WINAPI d3drm_wrap_ApplyRelative(IDirect3DRMWrap *iface, IDirect3DRMFrame *frame, IDirect3DRMObject *object)
Definition: meshbuilder.c:2996
static HRESULT WINAPI d3drm_wrap_AddDestroyCallback(IDirect3DRMWrap *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: meshbuilder.c:2911
static ULONG WINAPI d3drm_wrap_AddRef(IDirect3DRMWrap *iface)
Definition: meshbuilder.c:2877
static HRESULT WINAPI d3drm_wrap_QueryInterface(IDirect3DRMWrap *iface, REFIID riid, void **out)
Definition: meshbuilder.c:2858
static DWORD WINAPI d3drm_wrap_GetAppData(IDirect3DRMWrap *iface)
Definition: meshbuilder.c:2942
static HRESULT WINAPI d3drm_wrap_DeleteDestroyCallback(IDirect3DRMWrap *iface, D3DRMOBJECTCALLBACK cb, void *ctx)
Definition: meshbuilder.c:2921
static HRESULT WINAPI d3drm_wrap_Init(IDirect3DRMWrap *iface, D3DRMWRAPTYPE type, IDirect3DRMFrame *reference, D3DVALUE ox, D3DVALUE oy, D3DVALUE oz, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, D3DVALUE ux, D3DVALUE uy, D3DVALUE uz, D3DVALUE ou, D3DVALUE ov, D3DVALUE su, D3DVALUE sv)
Definition: meshbuilder.c:2978
static ULONG WINAPI d3drm_wrap_Release(IDirect3DRMWrap *iface)
Definition: meshbuilder.c:2887
static HRESULT WINAPI d3drm_wrap_SetAppData(IDirect3DRMWrap *iface, DWORD data)
Definition: meshbuilder.c:2931
static HRESULT WINAPI d3drm_wrap_SetName(IDirect3DRMWrap *iface, const char *name)
Definition: meshbuilder.c:2951
static HRESULT WINAPI d3drm_wrap_Apply(IDirect3DRMWrap *iface, IDirect3DRMObject *object)
Definition: meshbuilder.c:2989
static HRESULT WINAPI d3drm_wrap_Clone(IDirect3DRMWrap *iface, IUnknown *outer, REFIID iid, void **out)
Definition: meshbuilder.c:2903
static HRESULT WINAPI d3drm_wrap_GetName(IDirect3DRMWrap *iface, DWORD *size, char *name)
Definition: meshbuilder.c:2960

Definition at line 3004 of file meshbuilder.c.

Referenced by d3drm_wrap_create().

◆ templates