c++ - 访问转换纹理的像素数据

标签 c++ directx

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

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

有人有什么想法吗?

最佳答案

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

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

关于c++ - 访问转换纹理的像素数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6526248/

相关文章:

c# - 使用Direct2d Effects时出现 "error LNK2001: unresolved external symbol _CLSID_D2D1Blend"如何解决?

c++ - 是否有与 Visual Studio 的 __declspec(novtable) 等效的 g++?

c++ - 如何从 ID3DXEffect 获取所有着色器常量(统一)?

directx - 在 Windows 10 上将 DirectInput 与 XBOX One Controller 和窗口焦点一起使用

c++ - 是否可以在使用 D3DXCreateTextureFromFileInMemoryEx 创建的一个位置中的两个纹理之间逐步进行 alpha 混合?

c++ - Visual C++ 中的 win32 项目是什么?

c++ - 文件输入截断第一个字

c++ - 作为纹理的深度缓冲区 - "D3D11 ERROR: The Format is invalid when creating a View"

c++ - CreateDXGIFactory2 - 未解析的符号 - dxgi.lib

c++ - "address of"运算符 & 的性能如何?