16

我已经看到使用这些类型的不同代码片段,但我还没有看到它们是在某些 <standard header file> 中定义的,还是只是在“本地头文件”中定义的,甚至是在文件级别定义的。

所以我想知道的是:有没有定义这些类型的标准头文件?或者是否有一些我应该复制的每个人都使用的标准定义?

我想这些类型的一个可能和常见的用途是表示坐标,我错了吗?

如果我想用这些来表示网格中的位置,还有什么我应该考虑的吗?有什么理由为什么或为什么不使用它们?

编辑:

澄清:int2 表示一对整数,float3 表示浮点数的三元组。

如果这些类型是在某个地方预定义的,那么使用它们会很好,而不必从头开始编写它,包括标准代数函数(operator+、operator- 等)。

4

5 回答 5

25

这些类型不是标准 C++ 的一部分。它们可能是在某个第三方库中定义的,或者您正在查看其他方言或语言。

GPU 代码(诸如 GLSL、Cg 或 HLSL 之类的着色器语言,或诸如 CUDA 或 OpenCL 之类的 GPGPU 的东西)通常将这些类型定义为相应的 SIMD 数据类型的名称。

于 2010-11-02T19:31:31.697 回答
9

它们在 CUDA(和 openCL?)中使用,您有特定大小的浮点数和内存使用情况,并且对齐很重要。

于 2010-11-02T15:57:38.520 回答
1

AFAIK 没有定义这些类型的标准头文件。根据您的描述,这int2意味着一对两个ints 可以在 C++ 中表示为std::pair<int, int>.

于 2010-11-02T15:56:07.583 回答
1

我仍然使用 <stdint.h> 中定义的 POSIX 类型。似乎每个人都为事物定义了自己的名称,而我有一个名称冲突的项目。不为类型定义自己的“宠物”名称已成为我的新范例。

于 2010-11-02T19:42:01.263 回答
0

这些类型不是标准的,我从未见过它们。您确定它们没有被用作(可怕的选择)标识符而不是类型吗?

一些很可能仍然可用的非标准类型是int32_t,uint64_t等(这些是由 C99 指定的,因此大多数现代 C++ 编译器也允许您在 C++ 中使用它们。)

于 2010-11-02T15:56:27.523 回答