0

一个简单的问题:我喜欢用 OpenGL Shader 语言简单地创建向量:

vector = vec3(a,b,c);

您将如何编写允许在 C++ 中使用此精确代码的 C++ 结构或类?

4

2 回答 2

3

所有这些工作已经完成,无需自己重写。你可以使用GLMmath

于 2013-02-12T17:43:19.600 回答
1

这可以通过编写一个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
于 2013-02-12T17:21:48.100 回答