江湖救急!!!OpenGL的问题,麻烦各位大侠路过时千万进来一看!100分

ssq237712 2003-09-18 09:36:06
我做个类似CAD的MDI窗口,在子窗口上绘图。
开始以子窗口区域作为Viewport,但发现在窗口Resize时,图形会随之改变。
现在我用Screen区域作为Viewport,但为什么在窗口上的坐标换算过去总有一些误差呢?最大化的时候,似乎就差个任务栏的高度,但非最大化的时候又不是这么回事?
到底坐标怎么换算?
初学OpenGL,麻烦各位指点详细一点。
...全文
39 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ssq237712 2003-09-25
  • 打赏
  • 举报
回复
问题已解决。也许我问的问题很菜,不过我还是奇怪,高手们为什么不愿意指点一二呢。

结贴了。
ssq237712 2003-09-24
  • 打赏
  • 举报
回复
提前!up up again and again.
不达目的誓不罢休
ssq237712 2003-09-22
  • 打赏
  • 举报
回复
?????
w1w2w3w4 2003-09-18
  • 打赏
  • 举报
回复
你是怎么换算的。
ssq237712 2003-09-18
  • 打赏
  • 举报
回复
似乎不行啊。郁闷...
知道opengl的坐标和窗口坐标应该怎么换算吗?
w1w2w3w4 2003-09-18
  • 打赏
  • 举报
回复
好像你在CreateParams里要给窗口类的Params.Style加上WS_CLIPCHILDREN和WS_CLIPSIBLINGS属性。Delphi中的MSHelp帮助有。我也不知道。
w1w2w3w4 2003-09-18
  • 打赏
  • 举报
回复
你改为scrPoint := ScreenToClient(你的窗口hwnd,Point(0, 0));试试.
ssq237712 2003-09-18
  • 打赏
  • 举报
回复
我是想当然尔。开始以Form区域作为Viewport时,即glviewport(0, 0, ClientWidth, ClientHeight)时,没有问题,窗口坐标(winX, winY)对应:
X := winX / clientWidth * 2 - 1;
Y := 1 - winY / clientHeight * 2;
但这时,窗口Resize时,图形也跟着改变。很讨厌的。
所以我想用Screen的区域来作为Viewport:
scrPoint := ScreenToClient(Point(0, 0));
glViewPort(scrPoint.x, scrPoint.y, Screen.Width, Screen.Height);
但奇怪的是,这时FormResize的时候,中心点Y坐标会跟着改变的,为什么?

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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