如何在MFC中实现OpenGL的全屏显示?

lckboy 2003-12-06 10:53:23
看了NeHe的OpenGL教程,里面的VC++代码都是用基于win32 API写的,有人会用MFC写吗?就NeHe第一课里面所说,要全屏显示,就要“最最重要的是要在创建窗口之前设置全屏模式”,但在MFC里面,我们应该怎样做呢?如果将DEVMODE dmScreenSettings和PIXELFORMATDESCRIPTOR pfd的设定都写在PreCreateWindow(CREATESTRUCT& cs)函数里面,那么就似乎不能说明设备模式是在OnCreate(LPCREATESTRUCT lpCreateStruct)之前就设置了,还是将全屏模式的设置放在InitInstance()里面,设置后才CMainFrame* pFrame = new CMainFrame;呢?

还有,用MFC写OpenGL程序,有必要创建文档/视图吗?还是用不基于文档/视图的MFC框架好呢?

请大家给出好的建议,谢谢了!

...全文
241 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
littlemouse3000 2004-02-20
  • 打赏
  • 举报
回复
推荐一本参考书《OpenGL高级编程与可视化系统开发(高级编程篇)》和
《OpenGL高级编程与可视化系统开发(系统开发篇)》 ,水利水电出版社的,这上面有例子。
www.openglsource.com上有介绍。
nonocast 2004-02-16
  • 打赏
  • 举报
回复
给我email
我发一个DEMO给你
czn 2004-02-15
  • 打赏
  • 举报
回复
用MFC不需要用文档/视图,用DIALOG-BASED也可以。
只需要有一个窗口HANDLE就可以了。
至于全品模式,你可以用假全平,我用的是假全平。
也可以用真全平,应该跟SDK差不多,你看看例子代码就知道了。
wu_chung_tang 2004-02-13
  • 打赏
  • 举报
回复
OpenGL程序的全屏和DX不一样,是假全屏,没办法独占显卡

有感性認識

既然用mfc了為何還要全屏 不然就不要用mfc了呀
uuq 2004-02-12
  • 打赏
  • 举报
回复
不是吧。我们开启双缓存时调GDI画不出来。我不知是不是独占。
maplexp 2003-12-26
  • 打赏
  • 举报
回复
OpenGL程序的全屏和DX不一样,是假全屏,没办法独占显卡
Leon8086 2003-12-25
  • 打赏
  • 举报
回复
楼上的,不管MFC还是API在这点上都是一样的,仔细看API的代码,他只不过是将分辨率调整到你需要的大小,然后用一个全屏的窗口覆盖整个桌面而已。

我不认为用MFC写全屏GL代码是一个明智的选择,MFC最主要的用途是简化消息响应和提供方便的Doc/View结构,这对于一个全屏GL程序来说根本没有必要,一般我只在一些编辑器上使用MFC。类似的全屏的渲染程序用MFC做事实上有些画蛇添足,而且远不如API实现起来方便(最明显的就是空闲渲染了)。如果楼主不太熟悉API的话,还是建议你了解一下,这不光对你编写类似的程序有好处,对你编写MFC的程序也一样有好处。
lckboy 2003-12-25
  • 打赏
  • 举报
回复
“MFC也是调用API呀,比如我们用win32编程,也可以加载菜单,工具栏,其它什么的,
在全屏模式我们不加载这些种东东不就搞定了,当然还要设置一属性。”

这样是可以做到全屏效果,但是就不是一个进程独占显卡资源来提高3D图像的运行性能,你依然可以在“微软”键盘上按某某键来切换程序。我的目的是要独占显卡资源,不是象媒体播放器的全屏效果
uuq 2003-12-13
  • 打赏
  • 举报
回复
MFC也是调用API呀,比如我们用win32编程,也可以加载菜单,工具栏,其它什么的,
在全屏模式我们不加载这些种东东不就搞定了,当然还要设置一属性。我是在那本
《OpenGL高级编程与可视化系统开发》系统开发篇上看到的,在168页上,不买书
可以到书店看看
lckboy 2003-12-13
  • 打赏
  • 举报
回复
uuq(杜牧)兄所说的是在窗口模式完成的,是一个变相的做法,但不是本质的做法,我意思是切换显示模式
uuq 2003-12-10
  • 打赏
  • 举报
回复
我看过这方面的文章,大概是这样,移走主窗口的标题,设置窗口位置,保存最初
的菜单,并设置菜单为空,最大化窗口。
Siw 2003-12-09
  • 打赏
  • 举报
回复
在MFC里有一个很方便的方法:
在主窗口中创建一个CDailog子窗口(如有特殊处理,可以继承一个类,写相关函数),把它作为显示窗口,要全屏,只需将其最大化就可以搞定(还可以设置其为TopMost Wnd)。Doc-View方式和第Dialog Base 方式都可以。
wwwdfq1977 2003-12-07
  • 打赏
  • 举报
回复
最好的办法是:彻底抛弃mfc!当然,如果你要写复杂界面的话,还是mfc方便
Fibre 2003-12-07
  • 打赏
  • 举报
回复
关注
azheng0305 2003-12-07
  • 打赏
  • 举报
回复
没有做过MFC的gl,呵呵,关注!
帮你顶顶

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧