位置: 编程技术 - 正文

MFC下二维OpenGL环境详细配置(opengl mfc)

编辑:rootadmin

推荐整理分享MFC下二维OpenGL环境详细配置(opengl mfc),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:opengl vc,opengl mfc,opengl cullface,opengl cullface,vc6.0 opengl,opengl vc,opengl vc,vc6.0 opengl,内容如对您有帮助,希望把文章链接给更多的朋友!

一直以来,网上有很多关于OpenGL在MFC环境下配置的教程,但是,一般都说的不够详细,或者配置过程不够完整,今天我在自己摸索和学习的基础了,写出了这篇文章,尽量说明了坐标系的设定、添加深度测试类型以防止颜色变淡或者不纯等等。首先说明,本配置教程配置完成的OpenGL环境为二维环境,坐标系为中心坐标系,客户区中心为OpenGL坐标系的中心,向右为x轴增大方向;向上为y轴增大方向,与其他的配置方法不太一样,如果想对坐标系进行修改,只需修改ReSizeGLScene函数中的下面一句:

(1) 新建一个MFC单文档应用程序,程序建立完成后,会自动设置一个视类,如CdispView类,OpenGL是图形操作,所以所有的操作都是在视类上进行的。

(2) 添加OpenGL头文件和库文件,实验室使用的是基于OpenGL4.0标准的最新版freeglut3.0开源库,OpenGL开源库种类很多,比较出名的有最早的glut库、OpenLuGL等等,这里选中这个库的原因是freeglut原生支持/位系统,并且有针对位系统优化的代码,方便后期升级,此外,这个库在SDK上基本保持了与glut的一致性,方便学习。下面(3)就来详细的讲如何配置

(3) 将FreeGlut_OpenGL_Dll文件夹中头文件文件夹打开,将其中的四个头文件添加到工程的附加包含目录下,或直接将其放在工程对应的目录下;将FreeGlut_OpenGL_Dll文件夹中位库文件夹打开(位系统也可以用位库,目前开发的时候也是按位库进行开发的,兼容性更好一点),将freeglut.lib和freeglut.dll两个dll文件添加到工程的附加库目录下,或直接将其放在工程对应的目录下;

(4) 在视类的头文件中包含OpenGL库:

//添加OpenGL头文件,调用OpenGL库

#include"glut.h"

如果还需要用牛四强写的OpenGL的常用画图函数,需要添加下面代码和相应的头文件、库文件

//调用我自己写的OpenGL常用画图函数

#include"OpenGLCommonDrawHead.h"

#pragmacomment(lib,"OpenGLCommonDraw.lib")

(5) 在类的属性栏,为下述消息加入消息处理函数:WM_CREATE (for OnCreate), WM_DESTROY (for OnDestroy), WM_SIZE (forOnSize), WM_ERASEBACKGROUND (for OnEraseBkground),如下图所示:

(6) 设置窗口显示风&#;。窗口创建之前我们必须设置窗口风&#;包含WS_CLIPCHILDREN和WS_CLIPSIBLINGS,从而避免OpenGL绘制到其他窗口中去。这些应该放在PreCreateWindow()中。

MFC下二维OpenGL环境详细配置(opengl mfc)

代码如下:

(7) 在视类的头文件中添加private类型的变量

(8) 在视类的头文件中定义相应的public初始化函数、缩放函数,并在CPP中填写函数内容:

头文件声明:

CPP文件代码具体内容:

(9) 在OnCreate中我们将通过建立像素&#;式和绘制上下文来初始化OpenGL. 在InitializeOpenGL()中会创建一个设备上下文(DC),为这个DC选择一个像素&#;式,创建和这个DC相关的绘制上下文(RC),然后选择这个RC.这个函数会调用SetupPixelFormat()来建立像素&#;式,代码如下:

() 在OnSize()中一般用来设置视口和视锥,因为这些是和窗口大小相关的。基本操作包括设置视口,选择投影矩阵,设置模型视图矩阵。

其中ReSizeGLScene的内容如下:

() 在绘制场景时,一般包括如下步骤:1)清空缓存。2)绘制场景。3)Flush掉渲染流水线。4)若设置了双缓冲,则交换前后台缓冲区。

在视类的OnDraw函数里面调用RenderScene()画图函数,画图函数的大框架如下:

() 为了使改变窗口大小时严重的闪烁,在OnEraseBkgnd里做一些操作,避免windows自己的窗口刷新闪烁。把原来的return一堆直接改成return TRUE。

() 为了避免内存泄露,我们要将在SetupPixelFormat()中使用了new运算符来为CClientDC对象分配的内存在程序关闭时delete掉,即OnDestroy事件。

解决vtkXOpenGLRenderWindow (0x2a9db): Could not find a decent visual 系统当前环境描述:bitUbuntu..5,gcc和g4.6.3,clangllvm-3.3,Mesa-.3.5,vtk-5..1。错误详情:ERROR:In/usr/local/src/VTK5..1/Rendering/vtkXOpenGLRenderWindow.cxx,linevtkXOp

OpenGL启用双缓冲时颜色变淡或者不纯的解法方法 初学OpenGL,什么都不太会,在开启双缓冲并进行实时绘图的时候发现,颜色和设置的颜色并不完全一样,不太纯正,一直找不到原因,互联网上也搜不

OpenGL学习_绘制行星系统 下面的Demo还使用了多种组合变换来实现地球绕太阳公转和自转的实现,还是直接看代码,有详细的注释。spanstyle=font-size:px;////main.cpp//OpenGL__Planet////Cr

标签: opengl mfc

本文链接地址:https://www.jiuchutong.com/biancheng/369649.html 转载请保留说明!

上一篇:OpenGL中的多重采样(opengl多级采样消除锯齿有什么用)

下一篇:解决vtkXOpenGLRenderWindow (0x2a9db90): Could not find a decent visual(解决胃胀气最快方法)

  • 我国流转税的税种有哪些
  • 税收滞纳金调增填哪张表
  • 哪些情况需要提高警惕小心毒品
  • 小规模纳税人广联达怎么取费怎么取
  • 企业出租房产增值税率
  • 出货一般要多久
  • 出口退税贷款操作流程
  • 收支平衡表excel怎么做
  • 企业对企业分红要缴纳什么税免税分红
  • 内部交易和内部往来是什么意思
  • 虚拟货币会计分录
  • 长期待摊费用摊销计入什么会计科目
  • 房地产企业取得净地的税收筹划
  • 简单征收的进项税额怎么调出来?
  • 无发票材料可以入材料账吗
  • 专项拨款形成的固定资产递延收益
  • 营改增后印花税计税依据文件
  • 新版增值税开票软件怎么下载
  • 土地转让增值税计税依据
  • 如何计算纳税调整增加额
  • 日用品专用发票可以抵税嘛
  • 增值税扣税凭证抵减销项税额
  • 医疗机构的界定
  • 视同销售收入是否缴纳企业所得税?
  • 社保支付账号是什么
  • 预付卡充值赠送的金额确认收入
  • 月末一次加权平均法是什么意思
  • 应收账款期初余额是借还是贷
  • 留存收益净利润之间关系
  • 厂房租金计入什么费用部门
  • 进项税额认证了也就是抵扣了吗?
  • 工业企业生产成本核算表
  • 产负债表的负债项目,显示了企业所负担债务的
  • php自动跳转页面
  • 如何设置电脑从硬盘启动
  • 在建工程账务处理包括哪些内容
  • macOS Big Sur 11.2 公测版 beta 1怎么更新?
  • 什么叫非同一控制下
  • 半球形的谢尔亨里克森天文台,挪威斯瓦尔巴群岛 (© Vincent Fournier/Gallery Stock)
  • etc通行费发票可以抵扣吗
  • 前端解决跨域问题的8种方案(最新最全)
  • 递延所得税资产和所得税费用的关系
  • discuz手机标准版
  • discuz论坛无法登录
  • 现金支付的现状
  • 发现以前年度的账错误
  • js闭包示例
  • 银行进账单是外来原始凭证吗
  • sqlserver2005安装失败
  • 法人怎么从公账上大量取钱
  • 开专用发票可以直接写加工费这个明细吗?
  • 不反写会影响开票吗
  • 单位买理财产品怎么买
  • 跨月的凭证出错如何处理
  • 劳务公司开出的劳务票需要申报个税吗
  • 货物运输企业的经营内容
  • 行政单位收取现金的规定
  • 实收资本现金入账怎么办
  • 前程无忧效果怎么样
  • 发票超过定额了怎么处理
  • 基本的select命令及作用
  • 配置windows server essentials出错
  • Windows Server 2008网络中顺畅访问“邻居”
  • 笔记本如何一键锁屏快捷键
  • mac自带计算器
  • win7系统重启后黑屏不进系统
  • node.js基本语法
  • web开发css
  • 有关于js构造函数的题
  • javascriptz
  • js怎么获取密码框内容
  • 实现断点续传的工具软件
  • javascript面向对象编程
  • 个人所得税完税证明在哪里查询
  • 电子税务局数字证书未检测到证书
  • 电子税务局校验码
  • 个税扣款怎么查询
  • 重庆税务总局发票查询
  • 电子税务局申报流程
  • 湖南兴广地税务师事务所有限公司(兴广集团有限公司)
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设