1 つの簡単な質問: OpenGL シェーダー言語でのベクトルの単純な作成が好きです。
vector = vec3(a,b,c);
C++ でこの正確なコードを可能にする C++ 構造体またはクラスをどのようにコーディングしますか?
vec3
これは、 3 つの float を受け入れるコンストラクターを作成することで実現できます。
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