main.c
来自「Wine-20031016」· C语言 代码 · 共 1,643 行 · 第 1/5 页
C
1,643 行
IDirect3D7_AddRef(ICOM_INTERFACE(This->d3d, IDirect3D7)); TRACE(" returning interface %p\n", *lplpDirect3D7); return DD_OK;}HRESULT WINAPIMain_IDirect3DDeviceImpl_7_3T_2T_SetRenderTarget(LPDIRECT3DDEVICE7 iface, LPDIRECTDRAWSURFACE7 lpNewRenderTarget, DWORD dwFlags){ ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface); IDirectDrawSurfaceImpl *target_impl = ICOM_OBJECT(IDirectDrawSurfaceImpl, IDirectDrawSurface7, lpNewRenderTarget); TRACE("(%p/%p)->(%p,%08lx)\n", This, iface, lpNewRenderTarget, dwFlags); if (target_impl != This->surface) { WARN(" Change of rendering target not handled yet !\n"); } return DD_OK;}HRESULT WINAPIMain_IDirect3DDeviceImpl_7_3T_2T_GetRenderTarget(LPDIRECT3DDEVICE7 iface, LPDIRECTDRAWSURFACE7* lplpRenderTarget){ ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface); TRACE("(%p/%p)->(%p)\n", This, iface, lplpRenderTarget); *lplpRenderTarget = ICOM_INTERFACE(This->surface, IDirectDrawSurface7); IDirectDrawSurface7_AddRef(ICOM_INTERFACE(This->surface, IDirectDrawSurface7)); TRACE(" returning surface at %p.\n", *lplpRenderTarget); return DD_OK;}HRESULT WINAPIMain_IDirect3DDeviceImpl_7_Clear(LPDIRECT3DDEVICE7 iface, DWORD dwCount, LPD3DRECT lpRects, DWORD dwFlags, D3DCOLOR dwColor, D3DVALUE dvZ, DWORD dwStencil){ ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface); TRACE("(%p/%p)->(%08lx,%p,%08lx,%08lx,%f,%08lx)\n", This, iface, dwCount, lpRects, dwFlags, (DWORD) dwColor, dvZ, dwStencil); return This->clear(This, dwCount, lpRects, dwFlags, dwColor, dvZ, dwStencil);}HRESULT WINAPIMain_IDirect3DDeviceImpl_7_3T_2T_SetTransform(LPDIRECT3DDEVICE7 iface, D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix){ ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface); DWORD matrix_changed = 0x00000000; TRACE("(%p/%p)->(%08x,%p)\n", This, iface, dtstTransformStateType, lpD3DMatrix); switch (dtstTransformStateType) { case D3DTRANSFORMSTATE_WORLD: { if (TRACE_ON(ddraw)) { TRACE(" D3DTRANSFORMSTATE_WORLD :\n"); dump_D3DMATRIX(lpD3DMatrix); } memcpy(This->world_mat, lpD3DMatrix, 16 * sizeof(float)); matrix_changed = WORLDMAT_CHANGED; } break; case D3DTRANSFORMSTATE_VIEW: { if (TRACE_ON(ddraw)) { TRACE(" D3DTRANSFORMSTATE_VIEW :\n"); dump_D3DMATRIX(lpD3DMatrix); } memcpy(This->view_mat, lpD3DMatrix, 16 * sizeof(float)); matrix_changed = VIEWMAT_CHANGED; } break; case D3DTRANSFORMSTATE_PROJECTION: { if (TRACE_ON(ddraw)) { TRACE(" D3DTRANSFORMSTATE_PROJECTION :\n"); dump_D3DMATRIX(lpD3DMatrix); } memcpy(This->proj_mat, lpD3DMatrix, 16 * sizeof(float)); matrix_changed = PROJMAT_CHANGED; } break; case D3DTRANSFORMSTATE_TEXTURE0: case D3DTRANSFORMSTATE_TEXTURE1: case D3DTRANSFORMSTATE_TEXTURE2: case D3DTRANSFORMSTATE_TEXTURE3: case D3DTRANSFORMSTATE_TEXTURE4: case D3DTRANSFORMSTATE_TEXTURE5: case D3DTRANSFORMSTATE_TEXTURE6: case D3DTRANSFORMSTATE_TEXTURE7: { DWORD mat_num = dtstTransformStateType - D3DTRANSFORMSTATE_TEXTURE0; if (TRACE_ON(ddraw)) { TRACE(" D3DTRANSFORMSTATE_TEXTURE%ld :\n", mat_num); dump_D3DMATRIX(lpD3DMatrix); } memcpy(This->tex_mat[mat_num], lpD3DMatrix, 16 * sizeof(float)); matrix_changed = TEXMAT0_CHANGED << mat_num; } break; default: ERR("Unknown transform type %08x !!!\n", dtstTransformStateType); break; } if (matrix_changed != 0x00000000) This->matrices_updated(This, matrix_changed); return DD_OK;}HRESULT WINAPIMain_IDirect3DDeviceImpl_7_3T_2T_GetTransform(LPDIRECT3DDEVICE7 iface, D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix){ ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface); TRACE("(%p/%p)->(%08x,%p)\n", This, iface, dtstTransformStateType, lpD3DMatrix); switch (dtstTransformStateType) { case D3DTRANSFORMSTATE_WORLD: { memcpy(lpD3DMatrix, This->world_mat, 16 * sizeof(D3DVALUE)); if (TRACE_ON(ddraw)) { TRACE(" returning D3DTRANSFORMSTATE_WORLD :\n"); dump_D3DMATRIX(lpD3DMatrix); } } break; case D3DTRANSFORMSTATE_VIEW: { memcpy(lpD3DMatrix, This->view_mat, 16 * sizeof(D3DVALUE)); if (TRACE_ON(ddraw)) { TRACE(" returning D3DTRANSFORMSTATE_VIEW :\n"); dump_D3DMATRIX(lpD3DMatrix); } } break; case D3DTRANSFORMSTATE_PROJECTION: { memcpy(lpD3DMatrix, This->proj_mat, 16 * sizeof(D3DVALUE)); if (TRACE_ON(ddraw)) { TRACE(" returning D3DTRANSFORMSTATE_PROJECTION :\n"); dump_D3DMATRIX(lpD3DMatrix); } } break; case D3DTRANSFORMSTATE_TEXTURE0: case D3DTRANSFORMSTATE_TEXTURE1: case D3DTRANSFORMSTATE_TEXTURE2: case D3DTRANSFORMSTATE_TEXTURE3: case D3DTRANSFORMSTATE_TEXTURE4: case D3DTRANSFORMSTATE_TEXTURE5: case D3DTRANSFORMSTATE_TEXTURE6: case D3DTRANSFORMSTATE_TEXTURE7: { DWORD mat_num = dtstTransformStateType - D3DTRANSFORMSTATE_TEXTURE0; memcpy(lpD3DMatrix, This->tex_mat[mat_num], 16 * sizeof(D3DVALUE)); if (TRACE_ON(ddraw)) { TRACE(" returning D3DTRANSFORMSTATE_TEXTURE%ld :\n", mat_num); dump_D3DMATRIX(lpD3DMatrix); } } break; default: ERR("Unknown transform type %08x !!!\n", dtstTransformStateType); return DDERR_INVALIDPARAMS; } return DD_OK;}HRESULT WINAPIMain_IDirect3DDeviceImpl_7_3T_2T_MultiplyTransform(LPDIRECT3DDEVICE7 iface, D3DTRANSFORMSTATETYPE dtstTransformStateType, LPD3DMATRIX lpD3DMatrix){ ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface); LPD3DMATRIX mat; DWORD matrix_changed = 0x00000000; TRACE("(%p/%p)->(%08x,%p)\n", This, iface, dtstTransformStateType, lpD3DMatrix); if (TRACE_ON(ddraw)) { TRACE(" Multiplying by :\n"); dump_D3DMATRIX(lpD3DMatrix); } switch (dtstTransformStateType) { case D3DTRANSFORMSTATE_WORLD: { if (TRACE_ON(ddraw)) { TRACE(" Resulting D3DTRANSFORMSTATE_WORLD matrix is :\n"); } mat = This->world_mat; matrix_changed = WORLDMAT_CHANGED; } break; case D3DTRANSFORMSTATE_VIEW: { if (TRACE_ON(ddraw)) { TRACE(" Resulting D3DTRANSFORMSTATE_VIEW matrix is :\n"); } mat = This->view_mat; matrix_changed = VIEWMAT_CHANGED; } break; case D3DTRANSFORMSTATE_PROJECTION: { if (TRACE_ON(ddraw)) { TRACE(" Resulting D3DTRANSFORMSTATE_PROJECTION matrix is :\n"); } mat = This->proj_mat; matrix_changed = PROJMAT_CHANGED; } break; case D3DTRANSFORMSTATE_TEXTURE0: case D3DTRANSFORMSTATE_TEXTURE1: case D3DTRANSFORMSTATE_TEXTURE2: case D3DTRANSFORMSTATE_TEXTURE3: case D3DTRANSFORMSTATE_TEXTURE4: case D3DTRANSFORMSTATE_TEXTURE5: case D3DTRANSFORMSTATE_TEXTURE6: case D3DTRANSFORMSTATE_TEXTURE7: { DWORD mat_num = dtstTransformStateType - D3DTRANSFORMSTATE_TEXTURE0; if (TRACE_ON(ddraw)) { TRACE(" Resulting D3DTRANSFORMSTATE_TEXTURE%ld matrix is :\n", mat_num); } mat = This->tex_mat[mat_num]; matrix_changed = TEXMAT0_CHANGED << mat_num; } break; default: ERR("Unknown transform type %08x !!!\n", dtstTransformStateType); return DDERR_INVALIDPARAMS; } multiply_matrix(mat,mat,lpD3DMatrix); if (TRACE_ON(ddraw)) { dump_D3DMATRIX(mat); } if (matrix_changed != 0x00000000) This->matrices_updated(This, matrix_changed); return DD_OK;}HRESULT WINAPIMain_IDirect3DDeviceImpl_7_GetViewport(LPDIRECT3DDEVICE7 iface, LPD3DVIEWPORT7 lpData){ ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface); TRACE("(%p/%p)->(%p)\n", This, iface, lpData); *lpData = This->active_viewport; if (TRACE_ON(ddraw)) { TRACE(" returning viewport : \n"); TRACE(" - dwX = %ld dwY = %ld\n", lpData->dwX, lpData->dwY); TRACE(" - dwWidth = %ld dwHeight = %ld\n", lpData->dwWidth, lpData->dwHeight); TRACE(" - dvMinZ = %f dvMaxZ = %f\n", lpData->dvMinZ, lpData->dvMaxZ); } return DD_OK;}HRESULT WINAPIMain_IDirect3DDeviceImpl_7_SetMaterial(LPDIRECT3DDEVICE7 iface, LPD3DMATERIAL7 lpMat){ ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface); FIXME("(%p/%p)->(%p): stub!\n", This, iface, lpMat); return DD_OK;}HRESULT WINAPIMain_IDirect3DDeviceImpl_7_GetMaterial(LPDIRECT3DDEVICE7 iface, LPD3DMATERIAL7 lpMat){ ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface); TRACE("(%p/%p)->(%p)\n", This, iface, lpMat); *lpMat = This->current_material; if (TRACE_ON(ddraw)) { TRACE(" returning material : \n"); dump_D3DMATERIAL7(lpMat); } return DD_OK;}HRESULT WINAPIMain_IDirect3DDeviceImpl_7_SetLight(LPDIRECT3DDEVICE7 iface, DWORD dwLightIndex, LPD3DLIGHT7 lpLight){ ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface); FIXME("(%p/%p)->(%08lx,%p): stub!\n", This, iface, dwLightIndex, lpLight); return DD_OK;}HRESULT WINAPIMain_IDirect3DDeviceImpl_7_GetLight(LPDIRECT3DDEVICE7 iface, DWORD dwLightIndex, LPD3DLIGHT7 lpLight){ ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface); TRACE("(%p/%p)->(%08lx,%p)\n", This, iface, dwLightIndex, lpLight); if (dwLightIndex > MAX_LIGHTS) return DDERR_INVALIDPARAMS; *lpLight = This->light_parameters[dwLightIndex]; if (TRACE_ON(ddraw)) { TRACE(" returning light : \n"); dump_D3DLIGHT7(lpLight); } return DD_OK;}HRESULT WINAPIMain_IDirect3DDeviceImpl_7_3T_2T_SetRenderState(LPDIRECT3DDEVICE7 iface, D3DRENDERSTATETYPE dwRenderStateType, DWORD dwRenderState){ ICOM_THIS_FROM(IDirect3DDeviceImpl, IDirect3DDevice7, iface); FIXME("(%p/%p)->(%08x,%08lx): stub!\n", This, iface, dwRenderStateType, dwRenderState); return DD_OK;}HRESULT WINAPIMain_IDirect3DDeviceImpl_7_3T_2T_GetRenderState(LPDIRECT3DDEVICE7 iface,
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?