游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5857|回复: 4

我遇到关于 wglMakeCurrent()的问题 请高手的思路

[复制链接]

4

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2006-4-7 16:19:00 | 显示全部楼层 |阅读模式
我做了个程序单文档视图程序,另外手动生成2个窗口,我想让这2个窗口显示相同图形的不同视角观察到的图形,后发现只有最后生成的那个窗口可以正常显示(也不算正常,第1个窗口尺寸改变图形也跟着变,先不管这现象的原因),但是第1个窗口是没有图的。找原因,应该是当前的渲染上下文已经改变了。像我这样的程序结构,有什么方法能处理好HGLRC吗?或者,还有其他什么原因?

0

主题

12

帖子

12

积分

新手上路

Rank: 1

积分
12
发表于 2006-4-9 15:08:00 | 显示全部楼层

Re:我遇到关于 wglMakeCurrent()的问题 请高手的思路

    wglMakeCurrent将某组hdc和hglrc置为当前(本线程),接下来的渲染将使用该hglrc的状态,而绘制结果将作用到该hdc上。
    估计你只在创建窗体的时候调用wglMakeCurrent,所以最后一个创建的窗体的hdc就一直成了所有绘制操作的作用对象。
    解决办法:让每个窗体在渲染开始前将他自己的hdc和公用的hglrc(因为你说你想显示相同图形,可能需要共用显示列表)置为当前就可以了。
    PS:
          第1个窗口尺寸改变图形也跟着变的问题。很有可能你现在的做法是:在第1个窗体的OnSize消息处理函数里调glViewport改变当前hglrc的视口。由于第2个窗体渲染时将使用这个改变后的视口,所以结果也跟着变。解决办法:让各个窗体渲染前将视口改为自己的尺寸。

4

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2006-4-13 18:24:00 | 显示全部楼层

Re: 我遇到关于 wglMakeCurrent()的问题 请高手的思路

谢谢 Molyneux!

4

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2006-4-13 18:30:00 | 显示全部楼层

Re:我遇到关于 wglMakeCurrent()的问题 请高手的思路

但是有一个疑问,就是关于"公用的hglrc",是不是指就一个“hglrc”,我现在是每个窗体创建时候就创建一个hglrc,多hglrc对程序有不良影响吗?

139

主题

2005

帖子

2057

积分

金牌会员

Rank: 6Rank: 6

积分
2057
QQ
发表于 2006-4-14 11:38:00 | 显示全部楼层

Re: Re:我遇到关于 wglMakeCurrent()的问题 请高手的思路

wozhaolala: Re:我遇到关于 wglMakeCurrent()的问题 请高手的思路

但是有一个疑问,就是关于"公用的hglrc",是不是指就一个“hglrc”,我现在是每个窗体创建时候就创建一个hglrc,多hglrc对程序有不良影响吗?

There's only one GLRC avaliable concurrently within [B]A[/B] certain [B]THREAD[/B] among all GLRC.That 's to say,only the last glrc you "made current" is effective.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 05:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表