着色器语法向量=c++中的vec3(a,b,c)

Shader Syntax vector = vec3(a,b,c) in C++?

本文关键字:vec3 中的 语法 向量 c++      更新时间:2023-10-16

一个简单的问题:我喜欢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