位置: 编程技术 - 正文

opengl的初始化(VS2013 MFC)(初始化opengl时出错)

编辑:rootadmin

推荐整理分享opengl的初始化(VS2013 MFC)(初始化opengl时出错),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:opengl示例,opengl示例,opengl默认和skia,opengll,opengl,opengl,opengl默认和skia,opengl无法初始化,内容如对您有帮助,希望把文章链接给更多的朋友!

吐血写贴,试了整整一天有木有。。。。。。桑心有木有。。。。。

好了不废话了,先把流程整理一下,然后有时间再解释代码~~~

第一步:新建MFC项目(标准的&#;单文档)

第二步:在XXXXView.h中添加(我的项目是test2view.h)

#include<Windows.h>#include<gl/GL.h>#include<gl/glut.h>#include<gl/GLU.h>#include<gl/GLAUX.H>

CClientDC *m_pDC;

public:afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);afx_msg void OnDestroy();afx_msg void OnSize(UINT nType, int cx, int cy);

BOOL DrawScene();BOOL bSetupPixelFormat();void Init();BOOL SetWindowPixelFormat(CDC *pDC);BOOL InitGL();

opengl的初始化(VS2013  MFC)(初始化opengl时出错)

第三步:在XXXXView.cpp中添加声明的函数

1.在PreCreateWindow函数中添加一行代码

cs.style |= (WS_CLIPCHILDREN | WS_CLIPSIBLINGS);//openGL必需的

2.

BOOL Ctest2View::SetWindowPixelFormat(CDC *pDC){//定义窗口的像素&#;式PIXELFORMATDESCRIPTOR pfd ={sizeof(PIXELFORMATDESCRIPTOR),1,PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL |PFD_DOUBLEBUFFER | PFD_SUPPORT_GDI,PFD_TYPE_RGBA,,0, 0, 0, 0, 0, 0,0,0,0,0, 0, 0, 0,,0,0,PFD_MAIN_PLANE,0,0, 0, 0};int nIndex = ChoosePixelFormat(pDC->GetSafeHdc(), &pfd);if (nIndex == 0)return FALSE;return SetPixelFormat(pDC->GetSafeHdc(), nIndex, &pfd);}BOOL Ctest2View::InitGL() // All Setup For OpenGL Goes Here{glShadeModel(GL_SMOOTH); // Enable Smooth ShadingglClearColor(0.0f, 0.0f, 0.0f, 0.0f); // Black BackgroundglClearDepth(1.0f); // Depth Buffer SetupglEnable(GL_DEPTH_TEST); // Enables Depth TestingglDepthFunc(GL_LEQUAL); // The Type Of Depth Testing To DoglHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);// Really Nice Perspective Calculationsreturn TRUE; // Initialization Went OK}int Ctest2View::OnCreate(LPCREATESTRUCT lpCreateStruct){if (CView::OnCreate(lpCreateStruct) == -1)return -1;// TODO: 在此添加您专用的创建代码m_pDC = new CClientDC(this);SetWindowPixelFormat(m_pDC);HGLRC hrc = wglCreateContext(m_pDC->GetSafeHdc());wglMakeCurrent(m_pDC->GetSafeHdc(), hrc);InitGL();return 0;}void Ctest2View::OnDestroy(){CView::OnDestroy();// TODO: 在此处添加消息处理程序代码HGLRC hrc = wglGetCurrentContext();wglMakeCurrent(NULL, 0);wglDeleteContext(hrc);delete m_pDC;}BOOL Ctest2View::DrawScene(){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glLoadIdentity();glTranslatef(-1.5f, 0.0f, -6.0f); // 左移 1.5 单位,并移入屏幕 6.0glBegin(GL_TRIANGLES); // 绘制三角形glColor3f(1.0f, 0.0f, 0.0f);glVertex3f(0.0f, 1.0f, 0.0f); // 上顶点glColor3f(0.0f, 1.0f, 0.0f);glVertex3f(-1.0f, -1.0f, 0.0f); // 左下glColor3f(0.0f, 0.0f, 1.0f);glVertex3f(1.0f, -1.0f, 0.0f); // 右下glEnd(); // 三角形绘制结束glTranslatef(3.0f, 0.0f, 0.0f); // 右移3单位glColor3f(0.0f, 0.0f, 1.0f);glBegin(GL_QUADS); // 绘制正方形glVertex3f(-1.0f, 1.0f, 0.0f); // 左上glVertex3f(1.0f, 1.0f, 0.0f); // 右上glVertex3f(1.0f, -1.0f, 0.0f); // 左下glVertex3f(-1.0f, -1.0f, 0.0f); // 右下glEnd();SwapBuffers(m_pDC->GetSafeHdc());return TRUE;}void Ctest2View::OnSize(UINT nType, int cx, int cy){CView::OnSize(nType, cx, cy);// TODO: 在此处添加消息处理程序代码GLsizei width, height;width = cx;height = cy;if (height == 0) // Prevent A Divide By Zero By{height = 1; // Making Height Equal One}glViewport(0, 0, width, height); // Reset The Current ViewportglMatrixMode(GL_PROJECTION); // Select The Projection MatrixglLoadIdentity(); // Reset The Projection Matrix// Calculate The Aspect Ratio Of The WindowgluPerspective(.0f, (GLfloat)width / (GLfloat)height, 0.1f, .0f);//透视投影glMatrixMode(GL_MODELVIEW); // Select The Modelview MatrixglLoadIdentity(); // Reset The Modelview Matrix}

3.在OnDraw函数中添加一行代码

DrawScene();

第四步:还是在XXXXView.cpp中添加以下命令

ON_WM_CREATE()ON_WM_DESTROY()ON_WM_SIZE()

第五步:编译运行

具体为什么添加这些函数,每句有什么含义~~大家自行学习喔~~~有问题随时留言~~

OpenGL教程翻译 第十四课 相机控制(一) OpenGL教程翻译第十四课相机控制(一)原文地址:

OpenGL--动作管理 目前,我在做一个计算机图形学的project,要求做一个可以移动控制的简易机器人。因而开始学习OpenGL。今天,先来研究一下如何给2D/3D图形添加动作。

GLUT函数说明 注:本文转自:

标签: 初始化opengl时出错

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

上一篇:'GL_COMBINE_ARB' : undeclared 'GL_RGB_SCALE_ARB' : undeclared 问题

下一篇:OpenGL教程翻译 第十四课 相机控制(一)(opengl learning中文)

  • 房地产开发企业资质等级有几个
  • 电子普通发票和纸质普通发票一样吗
  • 给对方汇钱
  • 个税全员全额扣缴申报指什么
  • 软件企业购进软件服务怎么入账
  • 实际上缴税费总额怎么算
  • 湖北省异地预缴增值税
  • 增值税加计递减额,这个科目如何使用
  • 投入的流动资金函怎么写
  • 发生销售折让可以不开具
  • 应收票据周转率高
  • 接受控股股东的非现金资产捐赠
  • 建筑业如何开票
  • 劳务费发票可以含材料费吗
  • 在汇兑结算方式中汇入行对流行代取的款项应先转入
  • 会计增长知识方面
  • 小规模附征税减半吗亲
  • 收到普通发票税号错了不改会怎么样
  • 公司减少注册资本的程序
  • 工资可以做企业成本吗?
  • win10 20h2更新时间久
  • yii2.0使用Plupload实现带缩放功能的多图上传
  • window10安装教程u盘
  • 行政单位预付款已收到货物无发票
  • Win11 Build 22471 Dev版更新推送(附更新修复已知问题汇总)
  • php lee
  • 材料成本差异贷方表示
  • 长期借款利息的会计科目
  • 工业企业成本核算会计分录
  • 生产费用在完工产品和在产品之间
  • 朱砂矿洞的历史
  • 公司租房子 房东让我们代缴税
  • 金税三期系统的对比有哪几个
  • 软件行业的最后阶段是
  • PHP+JQuery+Ajax实现分页方法详解
  • c语言中函数的实参和形参
  • linux中搭建web服务器
  • 借款利息记入短期借款吗
  • 发票违法行为的认定
  • 冲销去年暂估成本对企业所得税的影响
  • sqlserver调用存储过程写法
  • 织梦网站怎么添加关键词
  • 货款分批付的会计分录
  • 研发企业税率是多少
  • 企业年度关联业务往来报告表必须填吗
  • 税控盘 金税盘
  • 生产成本怎么结账
  • mysql中You can’t specify target table for update in FROM clause错误解决方法
  • 房地产开发成本和房地产开发产品
  • 收到设计费分录怎么写
  • 没有收入有支出怎么处理账务
  • 人力公司开的代驾发票
  • 公司建账初期做账怎么做
  • 年初速动比率怎么算
  • 企业材料物资的采购费用包括
  • sql查询生成器
  • win7users移动其它盘
  • win8链接wi-fi
  • windows 2000 server sp4 下载
  • centos sudoers
  • linux系统关闭ftp服务
  • atwakeup进程
  • xp系统盘空间不足怎么办
  • windows8.1的设置在哪
  • 在linux操作系统中把外部设备当作文件统一管理
  • 如何在linux系统中卸载一个已装载的文件系统
  • python在web上的应用
  • cocos2dx 2.2.2
  • javascript数据结构
  • python脚本基本命令
  • 文件读写过程中,程序将直接与磁盘文件进行数据交换
  • jquery鼠标移入移出切换图片
  • js函数详解
  • 快速排序的算法流程图
  • 税务局属于什么行业类别
  • 工会的会费收入是什么意思
  • 浙江公务员冬令时上班时间
  • 非贸付汇代扣代缴企业所得税
  • 规范性文件失效后,没有新文件,可以使用民法典第十条吗
  • 企业报税年报如何填写
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设