访问转换后的纹理的像素数据
在通过 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这不会达到你想要的结果。使用
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()
.