那么类型int2,int3,float2,float3等

Mob*_*erg 12 c++

我已经看到使用这些类型的不同代码片段,但我还没有看到它们是在某些<标准头文件>中定义还是仅在"本地头文件"中定义,甚至在文件级别定义.

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

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

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

编辑:

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

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

jal*_*alf 20

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

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

  • 在这些语言中,它们非常常用,是的,因为 GPU 旨在处理此类类型。在常规 C++ 中,这些特定类型不存在,但在许多 CPU 上,其他 SIMD 类型可用(例如,x86 具有 __m128,基本上是 4 个浮点数),并且有时会使用这些类型,但不经常使用,并且通常仅在对性能敏感的代码中。 (2认同)

Mar*_*ett 8

它们用在CUDA(和openCL?)中,你有特定大小的浮点数和内存使用率,并且对齐是一个大问题.