Parsing 如何通过DirectX中的texutre进行解析?(IDirect3DTexture9*)
我一直试图找出如何在directx中解析纹理,原因有两个:编写自己的纹理格式和操作现有IDirect3DTexture9类型纹理中的数据 我一直在研究IDirect3DTexture9::LockRect()函数,但我不确定它是如何工作的,我在D3DLOCKED中从中得到的void*pBits是否是纹理中的数据?这是否意味着我可以通过将其转换为D3DX颜色或其他方式来阅读 我只想能够读入rgba值,如果我想写的话,就写它们Parsing 如何通过DirectX中的texutre进行解析?(IDirect3DTexture9*),parsing,graphics,directx,textures,Parsing,Graphics,Directx,Textures,我一直试图找出如何在directx中解析纹理,原因有两个:编写自己的纹理格式和操作现有IDirect3DTexture9类型纹理中的数据 我一直在研究IDirect3DTexture9::LockRect()函数,但我不确定它是如何工作的,我在D3DLOCKED中从中得到的void*pBits是否是纹理中的数据?这是否意味着我可以通过将其转换为D3DX颜色或其他方式来阅读 我只想能够读入rgba值,如果我想写的话,就写它们 真的不知道去哪里,任何帮助都将不胜感激 pBits值是指向实际纹理数据的
真的不知道去哪里,任何帮助都将不胜感激 pBits值是指向实际纹理数据的指针。数据的格式由您在创建纹理时指定 音高是一行中的字节数。这不一定(尽管通常是)纹理的宽度乘以每个像素的字节数 因此,如果您创建了D3DFMT_A32B32G32R32F纹理,那么您确实可以将pBits指针投射到D3DXCOLOR指针,并访问颜色组件,如数组(即COLOR[count].r等) 但是,如果它是32位的,那么您将需要一个如下所示的结构(我不确定我的组件是否正确,但您可以很容易地找出正确的顺序) 然后,您可以将PBIT强制转换为ARGB指针,并以相同的方式访问它 当你将压缩的纹理加入其中时,事情会变得复杂得多,但这是最基本的
struct ARGB
{
unsigned char a;
unsigned char r;
unsigned char g;
unsigned char b;
};