Jump to content

Zeia

Premium
  • Posts

    29
  • Joined

  • Last visited

  • Feedback

    0%

Everything posted by Zeia

  1. Hi I Can Enable Hack Shield But Not Start HSUpdate.exe It does not appear ; // Sorry Bad English [Hidden Content]
  2. 2>eterlib.lib(Camera.obj) : error LNK2001: unresolved external symbol _D3DXMatrixDeterminant@4 2>eterlib.lib(GrpDevice.obj) : error LNK2001: unresolved external symbol _Direct3DCreate9@4 2>Distribute/metin2client.exe : fatal error LNK1120: 2 unresolved externals Please Help Me ; Direct3DCreate9 : int CGraphicDevice::Create(HWND hWnd, int iHres, int iVres, bool Windowed, int /*iBit*/, int iReflashRate) { int iRet = CREATE_OK; Destroy(); ms_iWidth = iHres; ms_iHeight = iVres; ms_hWnd = hWnd; ms_hDC = GetDC(hWnd); ms_lpd3d = Direct3DCreate9(D3D_SDK_VERSION); if (!ms_lpd3d) return CREATE_NO_DIRECTX; if (!ms_kD3DDetector.Build(*ms_lpd3d, EL3D_ConfirmDevice)) return CREATE_ENUM; if (!ms_kD3DDetector.Find(800, 600, 32, TRUE, &ms_iD3DModeInfo, &ms_iD3DDevInfo, &ms_iD3DAdapterInfo)) return CREATE_DETECT; std::string stDevList; ms_kD3DDetector.GetString(&stDevList); //Tracen(stDevList.c_str()); //Tracenf("adapter %d, device %d, mode %d", ms_iD3DAdapterInfo, ms_iD3DDevInfo, ms_iD3DModeInfo); D3D_CAdapterInfo * pkD3DAdapterInfo = ms_kD3DDetector.GetD3DAdapterInfop(ms_iD3DAdapterInfo); if (!pkD3DAdapterInfo) { Tracenf("adapter %d is EMPTY", ms_iD3DAdapterInfo); return CREATE_DETECT; } if (__IsInDriverBlackList(*pkD3DAdapterInfo)) { iRet |= CREATE_BAD_DRIVER; __WarningMessage(hWnd, CREATE_BAD_DRIVER); } D3D_SModeInfo * pkD3DModeInfo = pkD3DAdapterInfo->GetD3DModeInfop(ms_iD3DDevInfo, ms_iD3DModeInfo); if (!pkD3DModeInfo) { Tracenf("device %d, mode %d is EMPTY", ms_iD3DDevInfo, ms_iD3DModeInfo); return CREATE_DETECT; } D3DADAPTER_IDENTIFIER9& rkD3DAdapterId=pkD3DAdapterInfo->GetIdentifier(); if (Windowed && strnicmp(rkD3DAdapterId.Driver, "3dfx", 4)==0 && 22 == pkD3DAdapterInfo->GetDesktopD3DDisplayModer().Format) { return CREATE_FORMAT; } if (pkD3DModeInfo->m_dwD3DBehavior==D3DCREATE_SOFTWARE_VERTEXPROCESSING) { iRet |= CREATE_NO_TNL; // DISABLE_NOTIFY_NOT_SUPPORT_TNL_MESSAGE //__WarningMessage(hWnd, CREATE_NO_TNL); // END_OF_DISABLE_NOTIFY_NOT_SUPPORT_TNL_MESSAGE } std::string stModeInfo; pkD3DModeInfo->GetString(&stModeInfo); //Tracen(stModeInfo.c_str()); int ErrorCorrection = 0; RETRY: ZeroMemory(&ms_d3dPresentParameter, sizeof(ms_d3dPresentParameter)); ms_d3dPresentParameter.Windowed = Windowed; ms_d3dPresentParameter.BackBufferWidth = iHres; ms_d3dPresentParameter.BackBufferHeight = iVres; ms_d3dPresentParameter.hDeviceWindow = hWnd; ms_d3dPresentParameter.BackBufferCount = m_uBackBufferCount; ms_d3dPresentParameter.SwapEffect = D3DSWAPEFFECT_DISCARD; if (Windowed) { ms_d3dPresentParameter.BackBufferFormat = pkD3DAdapterInfo->GetDesktopD3DDisplayModer().Format; } else { ms_d3dPresentParameter.BackBufferFormat = pkD3DModeInfo->m_eD3DFmtPixel; ms_d3dPresentParameter.FullScreen_RefreshRateInHz = iReflashRate; } ms_d3dPresentParameter.Flags = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER; ms_d3dPresentParameter.EnableAutoDepthStencil = TRUE; ms_d3dPresentParameter.AutoDepthStencilFormat = pkD3DModeInfo->m_eD3DFmtDepthStencil; ms_dwD3DBehavior = pkD3DModeInfo->m_dwD3DBehavior; if (FAILED(ms_hLastResult = ms_lpd3d->CreateDevice( ms_iD3DAdapterInfo, D3DDEVTYPE_HAL, hWnd, // 2004. 1. 9 myevan 버텍스 프로세싱 방식 자동 선택 추가 pkD3DModeInfo->m_dwD3DBehavior, &ms_d3dPresentParameter, &ms_lpd3dDevice))) { switch (ms_hLastResult) { case D3DERR_INVALIDCALL: Tracen("IDirect3DDevice.CreateDevice - ERROR D3DERR_INVALIDCALLnThe method call is invalid. For example, a method's parameter may have an invalid value."); break; case D3DERR_NOTAVAILABLE: Tracen("IDirect3DDevice.CreateDevice - ERROR D3DERR_NOTAVAILABLEnThis device does not support the queried technique. "); break; case D3DERR_OUTOFVIDEOMEMORY: Tracen("IDirect3DDevice.CreateDevice - ERROR D3DERR_OUTOFVIDEOMEMORYnDirect3D does not have enough display memory to perform the operation"); break; default: Tracenf("IDirect3DDevice.CreateDevice - ERROR %d", ms_hLastResult); break; } if (ErrorCorrection) return CREATE_DEVICE; // 2004. 1. 9 myevan 큰의미 없는 코드인듯.. 에러나면 표시하고 종료하자 iReflashRate = 0; ++ErrorCorrection; iRet = CREATE_REFRESHRATE; goto RETRY; } // Check DXT Support Info if(ms_lpd3d->CheckDeviceFormat( ms_iD3DAdapterInfo, D3DDEVTYPE_HAL, ms_d3dPresentParameter.BackBufferFormat, 0, D3DRTYPE_TEXTURE, D3DFMT_DXT1) == D3DERR_NOTAVAILABLE) { ms_bSupportDXT = false; } if(ms_lpd3d->CheckDeviceFormat( ms_iD3DAdapterInfo, D3DDEVTYPE_HAL, ms_d3dPresentParameter.BackBufferFormat, 0, D3DRTYPE_TEXTURE, D3DFMT_DXT3) == D3DERR_NOTAVAILABLE) { ms_bSupportDXT = false; } if(ms_lpd3d->CheckDeviceFormat( ms_iD3DAdapterInfo, D3DDEVTYPE_HAL, ms_d3dPresentParameter.BackBufferFormat, 0, D3DRTYPE_TEXTURE, D3DFMT_DXT5) == D3DERR_NOTAVAILABLE) { ms_bSupportDXT = false; } if (FAILED((ms_hLastResult = ms_lpd3dDevice->GetDeviceCaps(&ms_d3dCaps)))) { Tracenf("IDirect3DDevice.GetDeviceCaps - ERROR %d", ms_hLastResult); return CREATE_GET_DEVICE_CAPS2; } if (!Windowed) SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, iHres, iVres, SWP_SHOWWINDOW); //Tracef("vertex shader version : %Xn",(DWORD)ms_d3dCaps.VertexShaderVersion); ms_lpd3dDevice->GetViewport(&ms_Viewport); m_pStateManager = new CStateManager(ms_lpd3dDevice); D3DXCreateMatrixStack(0, &ms_lpd3dMatStack); ms_lpd3dMatStack->LoadIdentity(); ms_ptVS = CreatePTStreamVertexShader(); ms_pntVS = CreatePNTStreamVertexShader(); ms_pnt2VS = CreatePNT2StreamVertexShader(); D3DXMatrixIdentity(&ms_matIdentity); D3DXMatrixIdentity(&ms_matView); D3DXMatrixIdentity(&ms_matProj); D3DXMatrixIdentity(&ms_matInverseView); D3DXMatrixIdentity(&ms_matInverseViewYAxis); D3DXMatrixIdentity(&ms_matScreen0); D3DXMatrixIdentity(&ms_matScreen1); D3DXMatrixIdentity(&ms_matScreen2); ms_matScreen0._11 = 1; ms_matScreen0._22 = -1; ms_matScreen1._41 = 1; ms_matScreen1._42 = 1; ms_matScreen2._11 = (float) iHres / 2; ms_matScreen2._22 = (float) iVres / 2; D3DXCreateSphere(ms_lpd3dDevice, 1.0f, 32, 32, &ms_lpSphereMesh, NULL); D3DXCreateCylinder(ms_lpd3dDevice, 1.0f, 1.0f, 1.0f, 8, 8, &ms_lpCylinderMesh, NULL); ms_lpd3dDevice->Clear(0L, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xff000000, 1.0f, 0); if (!__CreateDefaultIndexBufferList()) return false; if (!__CreatePDTVertexBufferList()) return false; DWORD dwTexMemSize = GetAvailableTextureMemory(); if (dwTexMemSize < 64 * 1024 * 1024) ms_isLowTextureMemory = true; else ms_isLowTextureMemory = false; if (dwTexMemSize > 100 * 1024 * 1024) ms_isHighTextureMemory = true; else ms_isHighTextureMemory = false; if (ms_d3dCaps.TextureAddressCaps & D3DPTADDRESSCAPS_BORDER) GRAPHICS_CAPS_CAN_NOT_TEXTURE_ADDRESS_BORDER=false; else GRAPHICS_CAPS_CAN_NOT_TEXTURE_ADDRESS_BORDER=true; //D3DADAPTER_IDENTIFIER9& rkD3DAdapterId=pkD3DAdapterInfo->GetIdentifier(); if (strnicmp(rkD3DAdapterId.Driver, "SIS", 3) == 0) { GRAPHICS_CAPS_CAN_NOT_DRAW_LINE = true; GRAPHICS_CAPS_CAN_NOT_DRAW_SHADOW = true; GRAPHICS_CAPS_HALF_SIZE_IMAGE = true; ms_isLowTextureMemory = true; } else if (strnicmp(rkD3DAdapterId.Driver, "3dfx", 4) == 0) { GRAPHICS_CAPS_CAN_NOT_DRAW_SHADOW = true; GRAPHICS_CAPS_HALF_SIZE_IMAGE = true; ms_isLowTextureMemory = true; } return (iRet); } Matrix : void CCamera::SetViewMatrix() { m_v3View = m_v3Target - m_v3Eye; D3DXVECTOR3 v3CenterRay = -m_v3View; CalculateRoll(); m_fDistance = D3DXVec3Length(&m_v3View); assert(m_fDistance >= 0); D3DXVec3Normalize(&m_v3View , &m_v3View); D3DXVec3Cross(&m_v3Cross, &m_v3Up, &m_v3View); D3DXVec3Normalize(&m_v3Cross, &m_v3Cross); D3DXVec3Cross(&m_v3Up, &m_v3View, &m_v3Cross); D3DXVec3Normalize(&m_v3Up, &m_v3Up); m_fPitch = D3DXVec3Dot(&m_v3Up, &D3DXVECTOR3(0.0f, 0.0f, 1.0f));// / D3DXVec2Length(&v2ViewYZ); if (m_fPitch >= 1) m_fPitch = 1; else if (m_fPitch <= -1) m_fPitch = -1; m_fPitch = acosf(m_fPitch); m_fPitch *= (180.0f / D3DX_PI); if ( 0 < m_v3View.z ) m_fPitch = -m_fPitch; D3DXMatrixLookAtRH(&m_matView, &m_v3Eye, &m_v3Target, &m_v3Up); float fDeterminantD3DMatView = D3DXMatrixDeterminant(&m_matView); D3DXMatrixInverse(&m_matInverseView, &fDeterminantD3DMatView, &m_matView); m_matBillboard = m_matInverseView; m_matBillboard._41 = 0.0f; m_matBillboard._42 = 0.0f; m_matBillboard._43 = 0.0f; m_ViewRay.SetStartPoint(m_v3Target); m_ViewRay.SetDirection(v3CenterRay, m_fDistance); m_kCameraBottomToTerrainRay.SetStartPoint(m_v3Eye); m_kCameraFrontToTerrainRay.SetStartPoint(m_v3Eye); m_kCameraBackToTerrainRay.SetStartPoint(m_v3Eye); m_kCameraLeftToTerrainRay.SetStartPoint(m_v3Eye); m_kCameraRightToTerrainRay.SetStartPoint(m_v3Eye); m_kTargetToCameraBottomRay.SetStartPoint(m_v3Target); m_kCameraBottomToTerrainRay.SetDirection(-m_v3Up, 2.0f * m_fTerrainCollisionRadius); m_kCameraFrontToTerrainRay.SetDirection(m_v3View, 4.0f * m_fTerrainCollisionRadius); m_kCameraBackToTerrainRay.SetDirection(-m_v3View, m_fTerrainCollisionRadius); m_kCameraLeftToTerrainRay.SetDirection(-m_v3Cross, 3.0f * m_fTerrainCollisionRadius); m_kCameraRightToTerrainRay.SetDirection(m_v3Cross, 3.0f * m_fTerrainCollisionRadius); m_kTargetToCameraBottomRay.SetDirection(v3CenterRay - m_fTerrainCollisionRadius * m_v3Up, D3DXVec3Length(&(v3CenterRay - m_fTerrainCollisionRadius * m_v3Up))); m_kLeftObjectCollisionRay.SetStartPoint(m_v3Target); m_kTopObjectCollisionRay.SetStartPoint(m_v3Target); m_kRightObjectCollisionRay.SetStartPoint(m_v3Target); m_kBottomObjectCollisionRay.SetStartPoint(m_v3Target); m_kLeftObjectCollisionRay.SetDirection(v3CenterRay + m_fObjectCollisionRadius * m_v3Cross, D3DXVec3Length(&(v3CenterRay + m_fObjectCollisionRadius * m_v3Cross))); m_kRightObjectCollisionRay.SetDirection(v3CenterRay - m_fObjectCollisionRadius * m_v3Cross, D3DXVec3Length(&(v3CenterRay - m_fObjectCollisionRadius * m_v3Cross))); m_kTopObjectCollisionRay.SetDirection(v3CenterRay + m_fObjectCollisionRadius * m_v3Up, D3DXVec3Length(&(v3CenterRay + m_fObjectCollisionRadius * m_v3Up))); m_kBottomObjectCollisionRay.SetDirection(v3CenterRay - m_fObjectCollisionRadius * m_v3Up, D3DXVec3Length(&(v3CenterRay + m_fObjectCollisionRadius * m_v3Up))); }
  3. 2>eterlib.lib(Camera.obj) : error LNK2001: unresolved external symbol _D3DXMatrixDeterminant@4 2>eterlib.lib(GrpDevice.obj) : error LNK2001: unresolved external symbol _Direct3DCreate9@4 2>Distribute/metin2client.exe : fatal error LNK1120: 2 unresolved externals Please Help Me ; Direct3DCreate9 : int CGraphicDevice::Create(HWND hWnd, int iHres, int iVres, bool Windowed, int /*iBit*/, int iReflashRate) { int iRet = CREATE_OK; Destroy(); ms_iWidth = iHres; ms_iHeight = iVres; ms_hWnd = hWnd; ms_hDC = GetDC(hWnd); ms_lpd3d = Direct3DCreate9(D3D_SDK_VERSION); if (!ms_lpd3d) return CREATE_NO_DIRECTX; if (!ms_kD3DDetector.Build(*ms_lpd3d, EL3D_ConfirmDevice)) return CREATE_ENUM; if (!ms_kD3DDetector.Find(800, 600, 32, TRUE, &ms_iD3DModeInfo, &ms_iD3DDevInfo, &ms_iD3DAdapterInfo)) return CREATE_DETECT; std::string stDevList; ms_kD3DDetector.GetString(&stDevList); //Tracen(stDevList.c_str()); //Tracenf("adapter %d, device %d, mode %d", ms_iD3DAdapterInfo, ms_iD3DDevInfo, ms_iD3DModeInfo); D3D_CAdapterInfo * pkD3DAdapterInfo = ms_kD3DDetector.GetD3DAdapterInfop(ms_iD3DAdapterInfo); if (!pkD3DAdapterInfo) { Tracenf("adapter %d is EMPTY", ms_iD3DAdapterInfo); return CREATE_DETECT; } if (__IsInDriverBlackList(*pkD3DAdapterInfo)) { iRet |= CREATE_BAD_DRIVER; __WarningMessage(hWnd, CREATE_BAD_DRIVER); } D3D_SModeInfo * pkD3DModeInfo = pkD3DAdapterInfo->GetD3DModeInfop(ms_iD3DDevInfo, ms_iD3DModeInfo); if (!pkD3DModeInfo) { Tracenf("device %d, mode %d is EMPTY", ms_iD3DDevInfo, ms_iD3DModeInfo); return CREATE_DETECT; } D3DADAPTER_IDENTIFIER9& rkD3DAdapterId=pkD3DAdapterInfo->GetIdentifier(); if (Windowed && strnicmp(rkD3DAdapterId.Driver, "3dfx", 4)==0 && 22 == pkD3DAdapterInfo->GetDesktopD3DDisplayModer().Format) { return CREATE_FORMAT; } if (pkD3DModeInfo->m_dwD3DBehavior==D3DCREATE_SOFTWARE_VERTEXPROCESSING) { iRet |= CREATE_NO_TNL; // DISABLE_NOTIFY_NOT_SUPPORT_TNL_MESSAGE //__WarningMessage(hWnd, CREATE_NO_TNL); // END_OF_DISABLE_NOTIFY_NOT_SUPPORT_TNL_MESSAGE } std::string stModeInfo; pkD3DModeInfo->GetString(&stModeInfo); //Tracen(stModeInfo.c_str()); int ErrorCorrection = 0; RETRY: ZeroMemory(&ms_d3dPresentParameter, sizeof(ms_d3dPresentParameter)); ms_d3dPresentParameter.Windowed = Windowed; ms_d3dPresentParameter.BackBufferWidth = iHres; ms_d3dPresentParameter.BackBufferHeight = iVres; ms_d3dPresentParameter.hDeviceWindow = hWnd; ms_d3dPresentParameter.BackBufferCount = m_uBackBufferCount; ms_d3dPresentParameter.SwapEffect = D3DSWAPEFFECT_DISCARD; if (Windowed) { ms_d3dPresentParameter.BackBufferFormat = pkD3DAdapterInfo->GetDesktopD3DDisplayModer().Format; } else { ms_d3dPresentParameter.BackBufferFormat = pkD3DModeInfo->m_eD3DFmtPixel; ms_d3dPresentParameter.FullScreen_RefreshRateInHz = iReflashRate; } ms_d3dPresentParameter.Flags = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER; ms_d3dPresentParameter.EnableAutoDepthStencil = TRUE; ms_d3dPresentParameter.AutoDepthStencilFormat = pkD3DModeInfo->m_eD3DFmtDepthStencil; ms_dwD3DBehavior = pkD3DModeInfo->m_dwD3DBehavior; if (FAILED(ms_hLastResult = ms_lpd3d->CreateDevice( ms_iD3DAdapterInfo, D3DDEVTYPE_HAL, hWnd, // 2004. 1. 9 myevan 버텍스 프로세싱 방식 자동 선택 추가 pkD3DModeInfo->m_dwD3DBehavior, &ms_d3dPresentParameter, &ms_lpd3dDevice))) { switch (ms_hLastResult) { case D3DERR_INVALIDCALL: Tracen("IDirect3DDevice.CreateDevice - ERROR D3DERR_INVALIDCALLnThe method call is invalid. For example, a method's parameter may have an invalid value."); break; case D3DERR_NOTAVAILABLE: Tracen("IDirect3DDevice.CreateDevice - ERROR D3DERR_NOTAVAILABLEnThis device does not support the queried technique. "); break; case D3DERR_OUTOFVIDEOMEMORY: Tracen("IDirect3DDevice.CreateDevice - ERROR D3DERR_OUTOFVIDEOMEMORYnDirect3D does not have enough display memory to perform the operation"); break; default: Tracenf("IDirect3DDevice.CreateDevice - ERROR %d", ms_hLastResult); break; } if (ErrorCorrection) return CREATE_DEVICE; // 2004. 1. 9 myevan 큰의미 없는 코드인듯.. 에러나면 표시하고 종료하자 iReflashRate = 0; ++ErrorCorrection; iRet = CREATE_REFRESHRATE; goto RETRY; } // Check DXT Support Info if(ms_lpd3d->CheckDeviceFormat( ms_iD3DAdapterInfo, D3DDEVTYPE_HAL, ms_d3dPresentParameter.BackBufferFormat, 0, D3DRTYPE_TEXTURE, D3DFMT_DXT1) == D3DERR_NOTAVAILABLE) { ms_bSupportDXT = false; } if(ms_lpd3d->CheckDeviceFormat( ms_iD3DAdapterInfo, D3DDEVTYPE_HAL, ms_d3dPresentParameter.BackBufferFormat, 0, D3DRTYPE_TEXTURE, D3DFMT_DXT3) == D3DERR_NOTAVAILABLE) { ms_bSupportDXT = false; } if(ms_lpd3d->CheckDeviceFormat( ms_iD3DAdapterInfo, D3DDEVTYPE_HAL, ms_d3dPresentParameter.BackBufferFormat, 0, D3DRTYPE_TEXTURE, D3DFMT_DXT5) == D3DERR_NOTAVAILABLE) { ms_bSupportDXT = false; } if (FAILED((ms_hLastResult = ms_lpd3dDevice->GetDeviceCaps(&ms_d3dCaps)))) { Tracenf("IDirect3DDevice.GetDeviceCaps - ERROR %d", ms_hLastResult); return CREATE_GET_DEVICE_CAPS2; } if (!Windowed) SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, iHres, iVres, SWP_SHOWWINDOW); //Tracef("vertex shader version : %Xn",(DWORD)ms_d3dCaps.VertexShaderVersion); ms_lpd3dDevice->GetViewport(&ms_Viewport); m_pStateManager = new CStateManager(ms_lpd3dDevice); D3DXCreateMatrixStack(0, &ms_lpd3dMatStack); ms_lpd3dMatStack->LoadIdentity(); ms_ptVS = CreatePTStreamVertexShader(); ms_pntVS = CreatePNTStreamVertexShader(); ms_pnt2VS = CreatePNT2StreamVertexShader(); D3DXMatrixIdentity(&ms_matIdentity); D3DXMatrixIdentity(&ms_matView); D3DXMatrixIdentity(&ms_matProj); D3DXMatrixIdentity(&ms_matInverseView); D3DXMatrixIdentity(&ms_matInverseViewYAxis); D3DXMatrixIdentity(&ms_matScreen0); D3DXMatrixIdentity(&ms_matScreen1); D3DXMatrixIdentity(&ms_matScreen2); ms_matScreen0._11 = 1; ms_matScreen0._22 = -1; ms_matScreen1._41 = 1; ms_matScreen1._42 = 1; ms_matScreen2._11 = (float) iHres / 2; ms_matScreen2._22 = (float) iVres / 2; D3DXCreateSphere(ms_lpd3dDevice, 1.0f, 32, 32, &ms_lpSphereMesh, NULL); D3DXCreateCylinder(ms_lpd3dDevice, 1.0f, 1.0f, 1.0f, 8, 8, &ms_lpCylinderMesh, NULL); ms_lpd3dDevice->Clear(0L, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, 0xff000000, 1.0f, 0); if (!__CreateDefaultIndexBufferList()) return false; if (!__CreatePDTVertexBufferList()) return false; DWORD dwTexMemSize = GetAvailableTextureMemory(); if (dwTexMemSize < 64 * 1024 * 1024) ms_isLowTextureMemory = true; else ms_isLowTextureMemory = false; if (dwTexMemSize > 100 * 1024 * 1024) ms_isHighTextureMemory = true; else ms_isHighTextureMemory = false; if (ms_d3dCaps.TextureAddressCaps & D3DPTADDRESSCAPS_BORDER) GRAPHICS_CAPS_CAN_NOT_TEXTURE_ADDRESS_BORDER=false; else GRAPHICS_CAPS_CAN_NOT_TEXTURE_ADDRESS_BORDER=true; //D3DADAPTER_IDENTIFIER9& rkD3DAdapterId=pkD3DAdapterInfo->GetIdentifier(); if (strnicmp(rkD3DAdapterId.Driver, "SIS", 3) == 0) { GRAPHICS_CAPS_CAN_NOT_DRAW_LINE = true; GRAPHICS_CAPS_CAN_NOT_DRAW_SHADOW = true; GRAPHICS_CAPS_HALF_SIZE_IMAGE = true; ms_isLowTextureMemory = true; } else if (strnicmp(rkD3DAdapterId.Driver, "3dfx", 4) == 0) { GRAPHICS_CAPS_CAN_NOT_DRAW_SHADOW = true; GRAPHICS_CAPS_HALF_SIZE_IMAGE = true; ms_isLowTextureMemory = true; } return (iRet); } Matrix : void CCamera::SetViewMatrix() { m_v3View = m_v3Target - m_v3Eye; D3DXVECTOR3 v3CenterRay = -m_v3View; CalculateRoll(); m_fDistance = D3DXVec3Length(&m_v3View); assert(m_fDistance >= 0); D3DXVec3Normalize(&m_v3View , &m_v3View); D3DXVec3Cross(&m_v3Cross, &m_v3Up, &m_v3View); D3DXVec3Normalize(&m_v3Cross, &m_v3Cross); D3DXVec3Cross(&m_v3Up, &m_v3View, &m_v3Cross); D3DXVec3Normalize(&m_v3Up, &m_v3Up); m_fPitch = D3DXVec3Dot(&m_v3Up, &D3DXVECTOR3(0.0f, 0.0f, 1.0f));// / D3DXVec2Length(&v2ViewYZ); if (m_fPitch >= 1) m_fPitch = 1; else if (m_fPitch <= -1) m_fPitch = -1; m_fPitch = acosf(m_fPitch); m_fPitch *= (180.0f / D3DX_PI); if ( 0 < m_v3View.z ) m_fPitch = -m_fPitch; D3DXMatrixLookAtRH(&m_matView, &m_v3Eye, &m_v3Target, &m_v3Up); float fDeterminantD3DMatView = D3DXMatrixDeterminant(&m_matView); D3DXMatrixInverse(&m_matInverseView, &fDeterminantD3DMatView, &m_matView); m_matBillboard = m_matInverseView; m_matBillboard._41 = 0.0f; m_matBillboard._42 = 0.0f; m_matBillboard._43 = 0.0f; m_ViewRay.SetStartPoint(m_v3Target); m_ViewRay.SetDirection(v3CenterRay, m_fDistance); m_kCameraBottomToTerrainRay.SetStartPoint(m_v3Eye); m_kCameraFrontToTerrainRay.SetStartPoint(m_v3Eye); m_kCameraBackToTerrainRay.SetStartPoint(m_v3Eye); m_kCameraLeftToTerrainRay.SetStartPoint(m_v3Eye); m_kCameraRightToTerrainRay.SetStartPoint(m_v3Eye); m_kTargetToCameraBottomRay.SetStartPoint(m_v3Target); m_kCameraBottomToTerrainRay.SetDirection(-m_v3Up, 2.0f * m_fTerrainCollisionRadius); m_kCameraFrontToTerrainRay.SetDirection(m_v3View, 4.0f * m_fTerrainCollisionRadius); m_kCameraBackToTerrainRay.SetDirection(-m_v3View, m_fTerrainCollisionRadius); m_kCameraLeftToTerrainRay.SetDirection(-m_v3Cross, 3.0f * m_fTerrainCollisionRadius); m_kCameraRightToTerrainRay.SetDirection(m_v3Cross, 3.0f * m_fTerrainCollisionRadius); m_kTargetToCameraBottomRay.SetDirection(v3CenterRay - m_fTerrainCollisionRadius * m_v3Up, D3DXVec3Length(&(v3CenterRay - m_fTerrainCollisionRadius * m_v3Up))); m_kLeftObjectCollisionRay.SetStartPoint(m_v3Target); m_kTopObjectCollisionRay.SetStartPoint(m_v3Target); m_kRightObjectCollisionRay.SetStartPoint(m_v3Target); m_kBottomObjectCollisionRay.SetStartPoint(m_v3Target); m_kLeftObjectCollisionRay.SetDirection(v3CenterRay + m_fObjectCollisionRadius * m_v3Cross, D3DXVec3Length(&(v3CenterRay + m_fObjectCollisionRadius * m_v3Cross))); m_kRightObjectCollisionRay.SetDirection(v3CenterRay - m_fObjectCollisionRadius * m_v3Cross, D3DXVec3Length(&(v3CenterRay - m_fObjectCollisionRadius * m_v3Cross))); m_kTopObjectCollisionRay.SetDirection(v3CenterRay + m_fObjectCollisionRadius * m_v3Up, D3DXVec3Length(&(v3CenterRay + m_fObjectCollisionRadius * m_v3Up))); m_kBottomObjectCollisionRay.SetDirection(v3CenterRay - m_fObjectCollisionRadius * m_v3Up, D3DXVec3Length(&(v3CenterRay + m_fObjectCollisionRadius * m_v3Up))); }
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.