将纹理渲染到窗口
我有一个对话框,我基本上想使用 DirectX 将其实现为纹理查看器。源纹理可以来自磁盘上的文件,也可以来自内存中的任意 D3D 纹理/表面。窗口的大小将是可调整的,因此我需要能够相应地缩放其内容(保留纵横比,虽然不是必需的,但了解它会很有用)。
实施上述内容的最佳方法是什么?
I've got a dialog that I'd basically like to implement as a texture viewer using DirectX. The source texture can either come from a file on-disk or from an arbitrary D3D texture/surface in memory. The window will be resizable, so I'll need to be able to scale its contents accordingly (preserving aspect ratio, while not necessary, would be useful to know).
What would be the best way to go about implementing the above?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
恕我直言,最简单的方法是创建一个四边形(或两个三角形),其顶点包含正确的 UV 坐标。您设置为观察立方体坐标的 XYZ 坐标。仅当单位矩阵设置为投影时这才有效。您可以在 X 轴和 Y 轴上使用 -1 到 1。
编辑:这是一个示例图:
IMHO the easiest way to do this is to create a quad (or two triangles) whose vertices contain the correct UV-coordinates. The XYZ coordinates you set to the viewing cube coordinates. This only works if the identity matrix is set as projection. You can use -1 to 1 on both X and Y axes.
EDIT: Here an example turorial:
这是我用来保留可调整大小对话的大小和缩放比例的代码。我的纹理保存在内存位图中。我相信如果您没有内存位图,您也可以适应。重要的是我确定正确的缩放因子以保留任何客户区域大小的纵横比的方式
希望这有帮助!
This is the code I use to preserve size and scaling for resizeable dialogue. My texture is held in a memory bitmap. I am sure you can adapt if you do not have a memory bitmap. The important bits is the way I determine the right scaling factor to preserve the aspect ratio for any client area size
Hope this helps!