关于DirectX中的窗口缩放与顶点的位置、纹理拉伸的问题

HengStar 2008-05-09 08:17:38
我写了一个DirectX窗口程序,里面只是简单的用顶点绘制面片,然后给面片贴上纹理,用正交矩阵做2D化渲染,但是我用鼠标改变窗口大小的时候,发现顶点和纹理也随之等比例缩放。
但是我不想要这样的效果,我想实现让窗口拉伸的时候里面的顶点和纹理不会随之改变,而且可以用滚动条控制屏幕显示的位置,请问高手们有什么好的简单点的解决方案吗?希望能详细解释,谢谢~
...全文
684 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
引力场变动源 2008-05-11
  • 打赏
  • 举报
回复
在D3D里面,改变窗体的大小的时候,如果没有重置D3D设备以更改分辨率的话,D3D系统默认是将渲染结果缩放以适合窗口的,顶点的位置其实并没有被改变,谁也没有去移动那些顶点,不是吗?^^

所以如果不想让显示的图像随着窗口的缩放而缩放的话,就要在D3D系统自动缩放之前把渲染结果拿过来自己处理。处理的方法就像我上面说的那样。

这里需要分两个阶段渲染,第一个阶段是把需要的图像渲染到一张纹理上,具体的可以在网上搜索“渲染到纹理”的技术;第二步是上一步渲染得到的纹理显示在屏幕上,方法就是与一个新的面片绑定,通过修改这个面片的纹理坐标,就可以选择显示第一步得到的纹理的哪一部分,而这个正是可以用滚动条控制的^^
HengStar 2008-05-11
  • 打赏
  • 举报
回复
不是很明白楼上说的,可以说具体点吗?我觉得窗口大小改变后渲染部分改变的是顶点的位置,跟纹理似乎没多大关系,因为顶点的位置是相对窗口的位置
引力场变动源 2008-05-11
  • 打赏
  • 举报
回复
窗口模式的DirextX程序,并且要求显示内容不随窗口的变化而变化,是这个意思吗?
我的想法是,先将要显示的内容通过“渲染到纹理”的技术渲染到一张固定大小的纹理上,然后创建一个与窗体等大并且随着窗体的大小变化而变化的2D显示体;然后,当窗体大小改变的时候,计算当前窗体大小和上面说的那个“固定大小的纹理”在尺寸上的比例关系,根据这个比例关系调整2D显示体的纹理坐标值,最后将固定大小的纹理交付给那个2D显示体显示就可以了。

拖动滚动条的时候,也只要根据窗体大小、纹理大小和滚动条位置计算纹理坐标就可以了。

AliasKavin 2008-05-10
  • 打赏
  • 举报
回复
RenderTarget 去看一下`~
HengStar 2008-05-10
  • 打赏
  • 举报
回复
代码比较多,不方便帖上来,只是想知道如何实现这样的效果,给个正确的思路就行了~
aceattacker 2008-05-09
  • 打赏
  • 举报
回复
贴代码上来!

8,325

社区成员

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

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