gpt4 book ai didi

c++ - 如何读取 direct3d 纹理像素

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:36:41 25 4
gpt4 key购买 nike

所以我有一个 x8r8g8b8 格式的 IDirect3DSurface9,其中包含后台缓冲区的内容。当我在其上调用 LockRect 时,我可以访问包含 pBits 的结构、指向我假设的像素的指针和整数 Pitch(我不清楚它的用途)。

如何读取单个像素?

Visual Studio 2008 C++

最佳答案

锁定区域存储在D3DLOCKED_RECT中.我从来没有用过这个,但文档说它是“表面一行中的字节数”。实际上,人们通常会称其为“步幅”(一些术语解释 in the MSDN )。

例如,如果一个像素有4个字节(XRGB的每个分量8位),纹理宽度为7,则图像通常存储为8*4字节而不是7*4字节,因为内存可以如果数据是 DWORD 对齐的,则访问速度更快。

因此,为了读取像素 [x, y],您必须读取

uint8_t *pixels = rect.pBits;
uint32_t *mypixel = (uint32_t*)&pixels[rect.Pitch*y + 4*x];

其中 4 是像素的大小。 *myPixel 将是我示例中像素的内容。

关于c++ - 如何读取 direct3d 纹理像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2998691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com