DirectXDialog.cpp
上传用户:fengshi120
上传日期:2014-07-17
资源大小:6155k
文件大小:2k
源码类别:

3D图形编程

开发平台:

C/C++

  1. // DirectXDialog.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "StereoPlus.h"
  5. #include "DirectXDialog.h"
  6. #include "3DWindow.h"
  7. #include ".directxdialog.h"
  8. // CDirectXDialog dialog
  9. IMPLEMENT_DYNAMIC(CDirectXDialog, CDialog)
  10. CDirectXDialog::CDirectXDialog(CWnd* pParent /*=NULL*/)
  11. : CDialog(CDirectXDialog::IDD, pParent)
  12. {
  13. m_pX = NULL;
  14. m_pY = NULL;
  15. m_pZ = NULL;
  16. m_pX = NULL;
  17. m_pC = NULL;
  18. m_nPoints = 0;
  19. }
  20. CDirectXDialog::~CDirectXDialog()
  21. {
  22. // dealloc Color
  23. if (m_pC) delete[] m_pC;
  24. }
  25. void CDirectXDialog::DoDataExchange(CDataExchange* pDX)
  26. {
  27. CDialog::DoDataExchange(pDX);
  28. }
  29. BEGIN_MESSAGE_MAP(CDirectXDialog, CDialog)
  30. END_MESSAGE_MAP()
  31. void CDirectXDialog::SetData(int nPoints,float* pX,float* pY,float* pZ,
  32.  unsigned char* pC,float* pS)
  33. {
  34. m_pX = pX;
  35. m_pY = pY;
  36. m_pZ = pZ;
  37. m_pS = pS;
  38. m_nPoints = nPoints;
  39. // convert *uchar to *Color
  40. if (m_pC) delete[] m_pC;
  41. m_pC = new Color[nPoints];
  42. for (int i=0; i<nPoints; ++i, pC+=4) {
  43. m_pC[i] = Color::MakeARGB(255,*pC,*(pC+1),*(pC+2));
  44. }
  45. }
  46. // CDirectXDialog message handlers
  47. BOOL CDirectXDialog::OnInitDialog()
  48. {
  49. CDialog::OnInitDialog();
  50. CWnd* pParent = GetParent();
  51. CRect rcParent;
  52. pParent->GetWindowRect(&rcParent);
  53. MoveWindow(&rcParent);
  54. C3DWindow* p3DWindow = (C3DWindow*)GetDlgItem(IDC_3D_CONTROL);
  55. if(p3DWindow)
  56. {
  57. CRect rcControl; 
  58. GetClientRect(&rcControl);
  59. rcControl.DeflateRect(10,10,10,10);
  60. p3DWindow->MoveWindow(&rcControl);
  61. p3DWindow->SetRegistryKey("3D Reconstruction");//arcball params should be kept separate
  62. p3DWindow->Start(false);
  63. p3DWindow->CreateVB(m_nPoints,m_pX,m_pY,m_pZ,m_pC,m_pS);
  64. }
  65. return TRUE;  // return TRUE unless you set the focus to a control
  66. // EXCEPTION: OCX Property Pages should return FALSE
  67. }