您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 研究生计算机图形学课程室内场景OpenGL--实验报告
1《高级计算机图形学》实验报告姓名:学号:班级:【实验报告要求】实验名称:高级计算机图形学室内场景实验目的:掌握使用OpenGL生成真实感复杂对象的方法,进一步熟练掌握构造实体几何表示法、扫描表示法、八叉树法、BSP树法等建模方法。实验要求:要求利用OpenGL生成一个真实感的复杂对象及其周围场景,并显示观测点变化时的几何变换,要具备在一个纹理复杂的场景中漫游功能。要求使用到光线跟踪算法、纹理映射技术以及实时绘制技术。一、实验效果图图1:正面效果图2图2:背面效果图图4:背面效果图3图4:室内场景细节效果图图5:场景角度转换效果图4二、源文件数据代码:共6个文件,其实现代码如下:1、DlgAbout.cpp#includeStdAfx.h#includeDlgAbout.hCAboutDlg::CAboutDlg():CDialog(CAboutDlg::IDD){}voidCAboutDlg::DoDataExchange(CDataExchange*pDX){CDialog::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)END_MESSAGE_MAP()2、FormCommandView.cpp#includestdafx.h#includeTool.h#includeMainFrm.h#includeFormCommandView.h#includeToolDoc.h#includeRenderView.h//Downloadby[]=__FILE__;#endif//CFormCommandViewIMPLEMENT_DYNCREATE(CFormCommandView,CFormView)CFormCommandView::CFormCommandView():CFormView(CFormCommandView::IDD){//{{AFX_DATA_INIT(CFormCommandView)5m_Smooth=FALSE;m_Antialias=FALSE;//}}AFX_DATA_INIT}CFormCommandView::~CFormCommandView(){}voidCFormCommandView::DoDataExchange(CDataExchange*pDX){CFormView::DoDataExchange(pDX);//{{AFX_DATA_MAP(CFormCommandView)DDX_Control(pDX,IDC_FRAME_COLOR_BACK,m_ControlBackColor);DDX_Check(pDX,IDC_CHECK_SMOOTH,m_Smooth);DDX_Check(pDX,IDC_CHECK_ANTIALIAS,m_Antialias);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CFormCommandView,CFormView)//{{AFX_MSG_MAP(CFormCommandView)ON_WM_PAINT()ON_WM_LBUTTONUP()ON_BN_CLICKED(IDC_RADIO_MODEL_1,OnRadioModel1)ON_BN_CLICKED(IDC_RADIO_MODEL_2,OnRadioModel2)ON_BN_CLICKED(IDC_CHECK_SMOOTH,OnCheckSmooth)ON_BN_CLICKED(IDC_CHECK_ANTIALIAS,OnCheckAntialias)//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////////CFormCommandViewdiagnostics#ifdef_DEBUGvoidCFormCommandView::AssertValid()const{CFormView::AssertValid();}6voidCFormCommandView::Dump(CDumpContext&dc)const{CFormView::Dump(dc);}CToolDoc*CFormCommandView::GetDocument()//non-debugversionisinline{ASSERT(m_pDocument-IsKindOf(RUNTIME_CLASS(CToolDoc)));return(CToolDoc*)m_pDocument;}#endif//_DEBUG//OnPaintvoidCFormCommandView::OnPaint(){//DevicecontextforpaintingCPaintDCdc(this);//OptionsarestoredinApplicationCToolApp*pApp=(CToolApp*)AfxGetApp();CRectrect;//Colorbackm_ControlBackColor.GetWindowRect(&rect);ScreenToClient(&rect);CBrushBrushBack(pApp-m_OptionColorGlBack);dc.FillRect(&rect,&BrushBack);}//OnLButtonUpvoidCFormCommandView::OnLButtonUp(UINTnFlags,CPointpoint){CRectrect;CToolApp*pApp=(CToolApp*)AfxGetApp();7//Optionbackcolorm_ControlBackColor.GetWindowRect(&rect);ScreenToClient(&rect);if(rect.PtInRect(point)){CColorDialogdlg(pApp-m_OptionColorGlBack);if(dlg.DoModal()==IDOK){pApp-m_OptionColorGlBack=dlg.GetColor();CRenderView*pView=(CRenderView*)GetRenderView();pView-m_ClearColorRed=(float)GetRValue(pApp-m_OptionColorGlBack)/255.0f;pView-m_ClearColorGreen=(float)GetGValue(pApp-m_OptionColorGlBack)/255.0f;pView-m_ClearColorBlue=(float)GetBValue(pApp-m_OptionColorGlBack)/255.0f;this-InvalidateRect(&rect,FALSE);pView-InvalidateRect(NULL,FALSE);}}CFormView::OnLButtonUp(nFlags,point);}//GetRenderViewCView*CFormCommandView::GetRenderView(){CToolApp*pApp=(CToolApp*)AfxGetApp();CMainFrame*pFrame=(CMainFrame*)pApp-m_pMainWnd;CView*pView=(CView*)pFrame-m_wndSplitter.GetPane(0,1);returnpView;}//ModelvoidCFormCommandView::OnRadioModel1(){glPolygonMode(GL_FRONT_AND_BACK,GL_LINE);this-GetRenderView()-InvalidateRect(NULL,FALSE);}8voidCFormCommandView::OnRadioModel2(){glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);this-GetRenderView()-InvalidateRect(NULL,FALSE);}//OnCheckSmoothvoidCFormCommandView::OnCheckSmooth(){m_Smooth=!m_Smooth;if(m_Smooth)glShadeModel(GL_SMOOTH);elseglShadeModel(GL_FLAT);this-GetRenderView()-InvalidateRect(NULL,FALSE);}//OnCheckAntialias//ToggleantialiasedlinesvoidCFormCommandView::OnCheckAntialias(){m_Antialias=!m_Antialias;if(m_Antialias){glEnable(GL_LINE_SMOOTH);glEnable(GL_BLEND);glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);glHint(GL_LINE_SMOOTH_HINT,GL_NICEST);glLineWidth(1.5f);}else{glDisable(GL_LINE_SMOOTH);glDisable(GL_BLEND);glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);glHint(GL_LINE_SMOOTH_HINT,GL_NICEST);glLineWidth(1.0f);}9GetRenderView()-InvalidateRect(NULL,FALSE);}3、MainFrm.cpp#includestdafx.h#includeTool.h//Downloadby[]=__FILE__;#endif//CMainFrameIMPLEMENT_DYNAMIC(CMainFrame,CFrameWnd)BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)//{{AFX_MSG_MAP(CMainFrame)ON_WM_CREATE()ON_WM_PAINT()//}}AFX_MSG_MAPEND_MESSAGE_MAP()staticUINTindicators[]={ID_SEPARATOR,//statuslineindicatorID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,};//CMainFrameconstruction/destructionCMainFrame::CMainFrame(){}10CMainFrame::~CMainFrame(){}intCMainFrame::OnCreate(LPCREATESTRUCTlpCreateStruct){if(CFrameWnd::OnCreate(lpCreateStruct)==-1)return-1;if(!m_wndToolBar.Create(this)||!m_wndToolBar.LoadToolBar(IDR_MAINFRAM
本文标题:研究生计算机图形学课程室内场景OpenGL--实验报告
链接地址:https://www.777doc.com/doc-3691195 .html