访问转换后的纹理的像素数据

发布于 2024-11-18 06:47:53 字数 232 浏览 0 评论 0原文

在通过 D3DXMatrixTransformation2D()texture->SetTransform() 变换(旋转和缩放)纹理后,如何访问纹理的变换像素数据?

我正在尝试进行 2D 像素完美碰撞检测,如果您只能使用 texture->LockRect() 访问未转换的像素数据,则这是不可能的。

有人有什么想法吗?

How do i access the TRANSFORMED pixel data for a texture, after it has been transformed (rotated and scaled) by D3DXMatrixTransformation2D() and texture->SetTransform()?

I'm trying to do 2D pixel perfect collision detection and it's impossible if you can only access the untransformed pixel data using texture->LockRect().

Anybody got any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夏末 2024-11-25 06:47:53

这不会达到你想要的结果。使用 SetTransform 方法,您可以设置在绘制纹理之前应用的变换。所以它不会改变你的图像,你可以读出像素值。

可以做的是将世界坐标投影到纹理的UV坐标,然后读出相应的像素值并进行比较,并在那里进行碰撞分辨率。
我猜您使用的是由 D3DXMatrixTransformation2D() 创建的矩阵的逆矩阵。

This will not achieve the results you wish. With the SetTransform method you set a transformation which is applied before the texture is drawn. So it wont morph your image that you can read out the pixel values.

What you could do is to project world coordinates to UV coordinates of your texture and then read out the according pixel value and compare it and do your collision resolution there.
I guess you use the inverse matrix of the matrix you created by D3DXMatrixTransformation2D().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文