一个简单的问题:我喜欢用 OpenGL Shader 语言简单地创建向量:
vector = vec3(a,b,c);
您将如何编写允许在 C++ 中使用此精确代码的 C++ 结构或类?
所有这些工作已经完成,无需自己重写。你可以使用GLMmath
这可以通过编写一个vec3
接受三个浮点数的构造函数来实现。
class vec3
{
public:
vec3( float x_, float y_, float z_ )
: x(x_)
, y(y_)
, z(z_)
{}
vec3( const vec3 &src )
{
*this = src;
}
vec3& operator =( const vec3 &src )
{
x = src.x;
y = src.y;
z = src.z;
return *this;
}
float x;
float y;
float z;
};
更有趣的是如何实现排列行为,比如
vec3 a( 1, 2, 3 );
vec3 b = a.yzx; // 2, 3, 1
vec3 c = a.yyx; // 2, 2, 1