位置: 编程技术 - 正文

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中文)

  • 所得税费用本期金额怎么算
  • 工会开户所需资料怎么写
  • 购买软件无形资产
  • 利息税减少
  • 收到境外汇款怎么处理
  • 500元以内的无票报销是累计还是一次
  • 公司对公账户限额吗
  • 如何存银行
  • 商业零售企业实行增值税后购进商品业务的账务处理
  • 企业政府性征地补偿款如何合法使用
  • 进口免税店的东西都是正品吗
  • 盈余公积可用于集体福利吗
  • 企业购买劳保用品会计处理
  • 印花税计提多了怎样更正
  • 转出未交增值税怎么算
  • 房产税计税依据房产原值怎么算
  • 定额发票有效期是多长时间?你知道吗?
  • 代建项目增值税税率
  • 软件企业产品如何销售
  • 坏账准备增加记什么方
  • 水费能不能开专票
  • 一般企业财务报表格式2019选是还是否
  • 事业单位洗车费如何入账
  • 非金融企业之间的借款合同要交印花税吗
  • 差额增值税计算公式
  • 企业增加值的计算
  • 社保公积金代缴
  • 申报高新企业的当年一定要研发费用加计扣除吗
  • php substring
  • deepin缩放
  • laravel框架关键技术解析
  • vue实现pdf下载
  • css设置背景颜色透明
  • 影响当期损益的税费
  • php目录浏览
  • torchaudio教程
  • 20分钟,使用Amazon SageMaker快速搭建属于自己的AIGC应用
  • 发票 加工费
  • 售后租回怎么理解
  • 保教费收入要交企业所得税吗
  • 计提本月工资社保怎么扣
  • 调整以前年度销项税怎么填申报表
  • 租赁公司一般都有什么税
  • 小规模纳税人与一般纳税人的区别表现在小规模纳税人
  • 企业做账会计分录流程
  • 票据承兑和贴现是指
  • sqlserver数据库和mysql区别
  • sqlserver233报错原因
  • 预提费用在资产负债表中如何列示
  • 支出应计入管理费用,而且要根据其发生额
  • 把其他应付款转成实收资本的话需要去工商改注册资本么
  • 支付单位结算卡费用计入什么科目
  • 因企业增资而产生的费用
  • 使用u盘安装windows10电脑识别不出来
  • win7系统如何彻底删除xp
  • windows2000自动登陆
  • ubuntu14.04安装ssh服务
  • mac开机后蓝屏没反应
  • linux系统转换为win系统脚本
  • window组件在哪里
  • win10怎么关闭securboot
  • 电脑桌面图标有虚影怎么回事
  • linux wc命令如何实现
  • find命令支持哪些查找方式
  • js动态表格可修改表格数据
  • perl删除文件夹
  • javascript高级程序设计电子书
  • shell脚本替换文件中某个字符串
  • js获取当前浏览器版本
  • Javascript Objects详解
  • super函数python
  • bpc什么时候进入中国
  • 税务被风控了多久才会解除
  • 全电发票
  • 残疾人保障金如何填报
  • 税务部门行政审批
  • 定期定额发票使用流程
  • 残疾人就业年审经办人
  • 重庆国税电子税务局
  • 金税工程什么意思
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设