gpt4 book ai didi

c++ - 使用 C++ 的 OpenGL : vtable troubles when passing class array to glTexImage2d

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:33 31 4
gpt4 key购买 nike

我用 float r、float g、float b、float alpha 创建了一个类 Color。它有一个带有虚拟析构函数的基类

我正在尝试将 Color 数组传递给 opengl 函数 glTexImage2D,其中 GL_RGBA 组织类型为 float(这将是一个数组 {float r, float g, float b, float alpha}).这要求 Color 仅包含 4 个 float (16 字节大小)。

但是,sizeof(Color) 显示我的类有一个 20 字节的大小,因为 Color 的基类有一个 < strong>vtable,感谢析构函数。

如何保留我的 vtable 并将我的 Color 数组传递给 glTexImage2D

最佳答案

简短回答:不,你不能那样做。

您可以在 glPixelStore() documentation 中看到 glTexImage2D() 的所有额外参数.如您所见,没有用于在像素之间添加“步幅”或“填充”的参数。可以选择在行首或行尾添加空间,或者在图像 (3D) 之间添加空间,但不能在像素之间添加空间。

建议:一组相同的 4D vector ,每个 vector 都有一个 vtable 是一种设计味道。这是一个糟糕的设计。为了与 C 兼容,您的颜色类型应该是 standard layout type .请特别注意,这意味着您不能使用虚函数。

如果您确实需要具有虚拟析构函数的基类型,请创建一个包装类型。

关于c++ - 使用 C++ 的 OpenGL : vtable troubles when passing class array to glTexImage2d,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34685284/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com