游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4736|回复: 10

有朋友知道在d3d窗口在改变长宽比情况下保持显示物体比

[复制链接]

13

主题

45

帖子

47

积分

注册会员

Rank: 2

积分
47
发表于 2005-2-8 20:50:00 | 显示全部楼层 |阅读模式

有朋友知道在d3d窗口在改变长宽比情况下保持显示物体比例吗
就是说根据窗口大小改变视口大小,而不会把显示物体拉变形



[em20] [em20] [em20]

13

主题

45

帖子

47

积分

注册会员

Rank: 2

积分
47
 楼主| 发表于 2005-2-8 21:30:00 | 显示全部楼层

Re:有朋友知道在d3d窗口在改变长宽比情况下保持显示物体

这么绝对?
在openGL下可以轻松实现这个功能,为什么在DIRECT3D下不行?
void ReSizeScene(int width, int height)           
{
    D3DXMATRIX matProj;
if (height==0)                                                       
      {
        height=1;                                                       
      }
         D3DXMatrixPerspectiveFovLH(&matProj, D3DX_PI/2, float(width/height), 1.0f, 500.0f);
         g_pd3dDevice->SetTransform(D3DTS_PROJECTION, &matProj);
}
在openGL里用这样类似的代码可搞定,在DX中就搞不定,郁闷。。。。。。

37

主题

727

帖子

740

积分

高级会员

Rank: 4

积分
740
发表于 2005-2-10 19:49:00 | 显示全部楼层

Re:有朋友知道在d3d窗口在改变长宽比情况下保持显示物体

opengl的基础知识........

50

主题

992

帖子

1012

积分

金牌会员

Rank: 6Rank: 6

积分
1012
发表于 2005-2-11 14:07:00 | 显示全部楼层

Re:有朋友知道在d3d窗口在改变长宽比情况下保持显示物体

当然可以,只要在WM_SIZE响应中正确设置D3D的窗口大小就可以了

8

主题

111

帖子

163

积分

注册会员

Rank: 2

积分
163
发表于 2005-2-11 15:58:00 | 显示全部楼层

Re:有朋友知道在d3d窗口在改变长宽比情况下保持显示物体

好象还要设Viewport的大小吧.

37

主题

727

帖子

740

积分

高级会员

Rank: 4

积分
740
发表于 2005-2-11 15:59:00 | 显示全部楼层

Re: Re:有朋友知道在d3d窗口在改变长宽比情况下保持显示物

ixnehc: Re:有朋友知道在d3d窗口在改变长宽比情况下保持显示物体比例吗

好象还要设Viewport的大小吧.


glviewport(0,0,w,h);

..........

31

主题

630

帖子

635

积分

高级会员

Rank: 4

积分
635
发表于 2005-2-11 23:17:00 | 显示全部楼层

Re:有朋友知道在d3d窗口在改变长宽比情况下保持显示物体

把窗口的引用保存起来,改变的时候,win.width/win.height为参数创建设备就行了。
或者翻过来,我记不清了:-)

0

主题

21

帖子

21

积分

注册会员

Rank: 2

积分
21
发表于 2005-2-13 11:28:00 | 显示全部楼层

Re:有朋友知道在d3d窗口在改变长宽比情况下保持显示物体

hdm2968:
晕,老大别误导观众阿 -P
从perspective Matrix的推导过程中就能知道,只要正确设置透视矩阵的高宽比,这个就能正确了,不管是gl还是d3d拉。

132

主题

1341

帖子

1341

积分

金牌会员

Rank: 6Rank: 6

积分
1341
发表于 2005-2-14 11:39:00 | 显示全部楼层

Re:有朋友知道在d3d窗口在改变长宽比情况下保持显示物体

对不起,理解错误了[em10],以为是:
有朋友知道在d3d窗口在改变"透视"长宽比情况下保持显示物体比例吗
就是说根据"视角"大小改变视口大小,而不会把显示物体拉变形


经常没看请题目就做题,没看清贴子就乱说话,对大家道歉了!!
[em1] [em5]

13

主题

45

帖子

47

积分

注册会员

Rank: 2

积分
47
 楼主| 发表于 2005-2-15 13:56:00 | 显示全部楼层

Re:有朋友知道在d3d窗口在改变长宽比情况下保持显示物体

后台缓冲区的大小是否应该同时改变?如果确实 需要改变,D3D好象不能自动变化,即使设定好了宽高比也不行的
OPENGL里却可以自动调整。
我编同样视觉效果的程序,拖动OPENGL的窗口物体比例不变,但拖动D3D窗口就一定会变!
我猜测D3D的后台缓冲区没有跟着变,所有图形在最后光栅化时候没按比例拉伸。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-24 08:16

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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