小编246*_*tNt的帖子

选择正确的子类以编程方式实例化

好的,上下文是一些序列化/反序列化代码,它将字节流解析为更容易使用的"对象"表示(反之亦然).

这是一个带有基本消息类的简化示例,然后根据"类型"标题,存在更多数据/函数,我们必须选择正确的子类来实例化:

class BaseMessage {
public:
    enum Type {
        MyMessageA = 0x5a,
        MyMessageB = 0xa5,
    };

    BaseMessage(Type type) : mType(type) { }
    virtual ~BaseMessage() { }

    Type type() const { return mType; } 

protected:
    Type mType;

    virtual void parse(void *data, size_t len);
};

class MyMessageA {
public:
    MyMessageA() : BaseMessage(MyMessageA) { }

    /* message A specific stuf ... */

protected:
    virtual void parse(void *data, size_t len);
};

class MyMessageB {
public:
    MyMessageB() : BaseMessage(MyMessageB) { }

    /* message B specific …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism serialization design-patterns subclassing

6
推荐指数
2
解决办法
1837
查看次数

OpenGL:SSBO vs“缓冲区纹理” vs“ PBO /纹理”以提供计算着色器

我需要将浮动数据输入到计算着色器。

我看到的3种方式是:

  • 着色器存储缓冲区对象
  • 缓冲区纹理
  • “经典”纹理(使用PBO将数据上传到GPU,然后使用glTexSubImage2D将数据复制到纹理)并在着色器中作为“ image2D”访问

每种技术的优缺点是什么?

我不需要过滤,我只需要访问原始浮点数据。由于SSBO和Buffer Texture为1D,这意味着如果我的数据为“ 2D”,我需要自己计算偏移量。

opengl

5
推荐指数
1
解决办法
767
查看次数