HRESULT d3drm_texture_create(struct d3drm_texture **texture, IDirect3DRM *d3drm) { struct d3drm_texture *object; TRACE("texture %p.\n", texture); if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object)))) return E_OUTOFMEMORY; object->IDirect3DRMTexture_iface.lpVtbl = &d3drm_texture1_vtbl; object->IDirect3DRMTexture2_iface.lpVtbl = &d3drm_texture2_vtbl; object->IDirect3DRMTexture3_iface.lpVtbl = &d3drm_texture3_vtbl; object->d3drm = d3drm; d3drm_object_init(&object->obj); *texture = object; return D3DRM_OK; }
HRESULT d3drm_face_create(struct d3drm_face **face) { static const char classname[] = "Face"; struct d3drm_face *object; TRACE("face %p.\n", face); if (!(object = heap_alloc_zero(sizeof(*object)))) return E_OUTOFMEMORY; object->IDirect3DRMFace_iface.lpVtbl = &d3drm_face1_vtbl; object->IDirect3DRMFace2_iface.lpVtbl = &d3drm_face2_vtbl; object->ref = 1; d3drm_object_init(&object->obj, classname); *face = object; return S_OK; }
HRESULT d3drm_device_create(struct d3drm_device **device, IDirect3DRM *d3drm) { struct d3drm_device *object; TRACE("device %p, d3drm %p.\n", device, d3drm); if (!(object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*object)))) return E_OUTOFMEMORY; object->IDirect3DRMDevice_iface.lpVtbl = &d3drm_device1_vtbl; object->IDirect3DRMDevice2_iface.lpVtbl = &d3drm_device2_vtbl; object->IDirect3DRMDevice3_iface.lpVtbl = &d3drm_device3_vtbl; object->IDirect3DRMWinDevice_iface.lpVtbl = &d3drm_device_win_vtbl; object->d3drm = d3drm; d3drm_object_init(&object->obj); *device = object; return D3DRM_OK; }