コード例 #1
0
ファイル: volume.c プロジェクト: WASSUM/longene_travel
/* Internal function called back during the CreateVolumeTexture */
HRESULT WINAPI D3D9CB_CreateVolume(IUnknown  *pDevice, IUnknown *pSuperior, UINT Width, UINT Height, UINT Depth,
                                   WINED3DFORMAT  Format, WINED3DPOOL Pool, DWORD Usage,
                                   IWineD3DVolume **ppVolume,
                                   HANDLE   * pSharedHandle) {
    IDirect3DVolume9Impl *object;
    IDirect3DDevice9Impl *This = (IDirect3DDevice9Impl *)pDevice;
    HRESULT hrc = D3D_OK;
    
    /* Allocate the storage for the device */
    object = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirect3DVolume9Impl));
    if (NULL == object) {
        FIXME("Allocation of memory failed\n");
        *ppVolume = NULL;
        return D3DERR_OUTOFVIDEOMEMORY;
    }

    object->lpVtbl = &Direct3DVolume9_Vtbl;
    object->ref = 1;
    hrc = IWineD3DDevice_CreateVolume(This->WineD3DDevice, Width, Height, Depth, Usage & WINED3DUSAGE_MASK, Format, 
                                       Pool, &object->wineD3DVolume, pSharedHandle, (IUnknown *)object);
    if (hrc != D3D_OK) {
        /* free up object */ 
        FIXME("(%p) call to IWineD3DDevice_CreateVolume failed\n", This);
        HeapFree(GetProcessHeap(), 0, object);
        *ppVolume = NULL;
    } else {
        *ppVolume = object->wineD3DVolume;
        object->container = pSuperior;
        object->forwardReference = pSuperior;
    }
    TRACE("(%p) Created volume %p\n", This, *ppVolume);
    return hrc;
}
コード例 #2
0
ファイル: volume.c プロジェクト: dvdhoo/wine
HRESULT volume_init(IDirect3DVolume8Impl *volume, IDirect3DDevice8Impl *device, UINT width, UINT height,
        UINT depth, DWORD usage, enum wined3d_format_id format, WINED3DPOOL pool)
{
    HRESULT hr;

    volume->IDirect3DVolume8_iface.lpVtbl = &Direct3DVolume8_Vtbl;
    volume->ref = 1;

    hr = IWineD3DDevice_CreateVolume(device->WineD3DDevice, width, height, depth, usage,
            format, pool, volume, &d3d8_volume_wined3d_parent_ops, &volume->wineD3DVolume);
    if (FAILED(hr))
    {
        WARN("Failed to create wined3d volume, hr %#x.\n", hr);
        return hr;
    }

    return D3D_OK;
}