OpenGL 绘制立方体、茶壶、环面等稍复杂的图形


1. 基于MFC绘制三维立体小球(太阳、地球、月亮)基本图形; 2. 基于MFC使用OpenGL 绘制立方体、茶壶、环面等稍复杂的图形; 3. 基于MFC使用OpenGL用鼠标控制三维物体;
资源截图
代码片段和文件信息

#include “stdafx.h“
#include “MainFrm.h“
#include “ClassView.h“
#include “Resource.h“
#include “MyOpenGL_MFC1.h“

class CClassViewMenuButton : public CMFCToolBarMenuButton
{
friend class CClassView;

DECLARE_SERIAL(CClassViewMenuButton)

public:
CClassViewMenuButton(HMENU hMenu = NULL) : CMFCToolBarMenuButton((UINT)-1 hMenu -1)
{
}

virtual void OnDraw(CDC* pDC const CRect& rect CMFCToolBarImages* pImages BOOL bHorz = TRUE
BOOL bCustomizeMode = FALSE BOOL bHighlight = FALSE BOOL bDrawBorder = TRUE BOOL bGrayDisabledButtons = TRUE)
{
pImages = CMFCToolBar::GetImages();

CAfxDrawState ds;
pImages->PrepareDrawImage(ds);

CMFCToolBarMenuButton::OnDraw(pDC rect pImages bHorz bCustomizeMode bHighlight bDrawBorder bGrayDisabledButtons);

pImages->EndDrawImage(ds);
}
};

IMPLEMENT_SERIAL(CClassViewMenuButton CMFCToolBarMenuButton 1)

//////////////////////////////////////////////////////////////////////
// 构造/析构
//////////////////////////////////////////////////////////////////////

CClassView::CClassView()
{
m_nCurrSort = ID_SORTING_GROUPBYTYPE;
}

CClassView::~CClassView()
{
}

BEGIN_MESSAGE_MAP(CClassView CDockablePane)
ON_WM_CREATE()
ON_WM_SIZE()
ON_WM_CONTEXTMENU()
ON_COMMAND(ID_CLASS_ADD_MEMBER_FUNCTION OnClassAddMemberFunction)
ON_COMMAND(ID_CLASS_ADD_MEMBER_VARIABLE OnClassAddMemberVariable)
ON_COMMAND(ID_CLASS_DEFINITION OnClassDefinition)
ON_COMMAND(ID_CLASS_PROPERTIES OnClassProperties)
ON_COMMAND(ID_NEW_FOLDER OnNewFolder)
ON_WM_PAINT()
ON_WM_SETFOCUS()
ON_COMMAND_RANGE(ID_SORTING_GROUPBYTYPE ID_SORTING_SORTBYACCESS OnSort)
ON_UPDATE_COMMAND_UI_RANGE(ID_SORTING_GROUPBYTYPE ID_SORTING_SORTBYACCESS OnUpdateSort)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CClassView 消息处理程序

int CClassView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CDockablePane::OnCreate(lpCreateStruct) == -1)
return -1;

CRect rectDummy;
rectDummy.SetRectEmpty();

// 创建视图:
const DWORD dwViewstyle = WS_CHILD | WS_VISIBLE | TVS_HASLINES | TVS_LINESATROOT | TVS_HASBUTTONS | WS_CLIPSIBLINGS | WS_CLIPCHILDREN;

if (!m_wndClassView.Create(dwViewstyle rectDummy this 2))
{
TRACE0(“未能创建类视图
“);
return -1;      // 未能创建
}

// 加载图像:
m_wndToolBar.Create(this AFX_DEFAULT_TOOLBAR_style IDR_SORT);
m_wndToolBar.LoadToolBar(IDR_SORT 0 0 TRUE /* 已锁定*/);

onchangeVisualstyle();

m_wndToolBar.SetPanestyle(m_wndToolBar.GetPanestyle() | CBRS_TOOLTIPS | CBRS_FLYBY);
m_wndToolBar.SetPanestyle(m_wndToolBar.GetPanestyle() & ~(CBRS_GRIPPER | CBRS_SIZE_DYNAMIC | CBRS_BORDER_TOP | CBRS_BORDER_BOTTOM | CBRS_BORDER_LEFT | CBRS_BORDER_RIGHT));

m_wndToolBar.SetOwner(this);

// 所有命令将通过此控件路由,而不是通过主框架路由:
m_wndToolBar.SetRouteCommandsViaframe(FALSE);

CMenu menuSort;
menuSort.LoadMenu(IDR_POPUP_SORT);

m_wndToolBar.ReplaceButton(ID_SORT_MENU CClassViewMenuButton

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     415232  2018-05-26 19:50  MyOpenGL_MFC1DebugMyOpenGL_MFC1.exe

     文件    3050604  2018-05-26 19:50  MyOpenGL_MFC1DebugMyOpenGL_MFC1.ilk

     文件    6605824  2018-05-26 19:50  MyOpenGL_MFC1DebugMyOpenGL_MFC1.pdb

     文件   96927744  2018-05-26 19:49  MyOpenGL_MFC1ipchmyopengl_mfc1-1c9ef9fcmyopengl_mfc1-a1d23c3d.ipch

     文件       9035  2018-04-27 08:43  MyOpenGL_MFC1MyOpenGL_MFC1ClassView.cpp

     文件       1275  2018-04-27 08:43  MyOpenGL_MFC1MyOpenGL_MFC1ClassView.h

     文件       8026  2018-05-09 11:22  MyOpenGL_MFC1MyOpenGL_MFC1Debugcl.command.1.tlog

     文件      67168  2018-05-09 11:22  MyOpenGL_MFC1MyOpenGL_MFC1DebugCL.read.1.tlog

     文件       8850  2018-05-09 11:22  MyOpenGL_MFC1MyOpenGL_MFC1DebugCL.write.1.tlog

     文件     188817  2018-05-09 10:52  MyOpenGL_MFC1MyOpenGL_MFC1DebugClassView.obj

     文件     136947  2018-05-09 10:52  MyOpenGL_MFC1MyOpenGL_MFC1DebugFileView.obj

     文件          2  2018-05-26 19:50  MyOpenGL_MFC1MyOpenGL_MFC1Debuglink-cvtres.read.1.tlog

     文件          2  2018-05-26 19:50  MyOpenGL_MFC1MyOpenGL_MFC1Debuglink-cvtres.write.1.tlog

     文件          2  2018-05-26 19:50  MyOpenGL_MFC1MyOpenGL_MFC1Debuglink.13348-cvtres.read.1.tlog

     文件          2  2018-05-26 19:50  MyOpenGL_MFC1MyOpenGL_MFC1Debuglink.13348-cvtres.write.1.tlog

     文件          2  2018-05-26 19:50  MyOpenGL_MFC1MyOpenGL_MFC1Debuglink.13348.read.1.tlog

     文件          2  2018-05-26 19:50  MyOpenGL_MFC1MyOpenGL_MFC1Debuglink.13348.write.1.tlog

     文件          2  2018-05-26 19:50  MyOpenGL_MFC1MyOpenGL_MFC1Debuglink.2788-cvtres.read.1.tlog

     文件          2  2018-05-26 19:50  MyOpenGL_MFC1MyOpenGL_MFC1Debuglink.2788-cvtres.write.1.tlog

     文件          2  2018-05-26 19:50  MyOpenGL_MFC1MyOpenGL_MFC1Debuglink.2788.read.1.tlog

     文件          2  2018-05-26 19:50  MyOpenGL_MFC1MyOpenGL_MFC1Debuglink.2788.write.1.tlog

     文件          2  2018-05-26 19:50  MyOpenGL_MFC1MyOpenGL_MFC1Debuglink.8460-cvtres.read.1.tlog

     文件          2  2018-05-26 19:50  MyOpenGL_MFC1MyOpenGL_MFC1Debuglink.8460-cvtres.write.1.tlog

     文件          2  2018-05-26 19:50  MyOpenGL_MFC1MyOpenGL_MFC1Debuglink.8460.read.1.tlog

     文件          2  2018-05-26 19:50  MyOpenGL_MFC1MyOpenGL_MFC1Debuglink.8460.write.1.tlog

     文件       3630  2018-05-26 19:50  MyOpenGL_MFC1MyOpenGL_MFC1Debuglink.command.1.tlog

     文件       8022  2018-05-26 19:50  MyOpenGL_MFC1MyOpenGL_MFC1Debuglink.read.1.tlog

     文件       2428  2018-05-26 19:50  MyOpenGL_MFC1MyOpenGL_MFC1Debuglink.write.1.tlog

     文件     103868  2018-05-09 10:52  MyOpenGL_MFC1MyOpenGL_MFC1DebugMainFrm.obj

     文件        676  2018-05-26 19:50  MyOpenGL_MFC1MyOpenGL_MFC1Debugmt.command.1.tlog

............此处省略89个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)