0

1 つの簡単な質問: OpenGL シェーダー言語でのベクトルの単純な作成が好きです。

vector = vec3(a,b,c);

C++ でこの正確なコードを可能にする C++ 構造体またはクラスをどのようにコーディングしますか?

4

2 に答える 2

1

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
于 2013-02-12T17:21:48.100 に答える