关于sdk4.2中的simpleD3D11Texture

在sdk4.2的目录下:NVIDIA GPU Computing SDK 4.2\C\src\simpleD3D11Texture存在一个texture_2d.cu,其中37行,是不是有问题,原文是:pixel = (float*)(surface + ypitch) + 4x;

我感觉应该是:

pixel = (float*)(surface + ypitch + 4x);
或者
pixel = (float*)(surface + y*pitch) + x;

各位大侠,有空帮忙看看?

楼主您好,
对于一个float *的指针,对他进行+x操作,
相当于:
得到该指针的地址,然后加上x * sizeof(float), 回写这个地址到指针里。

所以您可以知道,对于有char *p:
(float *)(p + 4 * x);
等价于:
(float *)p + x;

您觉得呢?

嗯嗯。刚才误会了你的帖子的意思。

我以为你让我选择您给出的2个写法之一。而未能看来上面还有一个原写法。
看漏了。真心不好意思。

那么此原写法应该是有问题的。已经和SDK Examples的人员进行了联系。以便确定此问题是否真的如此。

请等待我的继续回复。

非常感谢您的反馈。

楼主辛苦了。

以及,我大致看了下代码,我不懂这个,似乎根据下文是当成16B一个像素算的。

那么就没问题了。

我将会等待开发人员的正式反馈。感谢楼主。

似乎无问题:
desc.Format = DXGI_FORMAT_R32G32B32A32_FLOAT

这里都是32-bit的float的,每个分量。

那么可能就这样了。
这个和我们常见的1B,1B,1B,1B的4B格式不同。。
大致这样了。

[

感谢你的回复,我也不太懂DX,源码是正确的。