gpt4 book ai didi

c++ - 将指针传递给结构

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

我习惯用 ASM 编写代码,并且需要为某些 OpenGL 项目切换到 C++。无论如何,我得到了以下程序:

glGenBuffers(Size, PointerToBuff);

据我了解,根据 Size 参数(缓冲区数量)的句柄将存储在 PointerToBuff 上。所以我想使用一个结构来保存我将获得的 2 个句柄,以防我使用:

glGenBuffers(2, *PointerToBuff);

所以我创建了一个结构:

struct VertexHandlers
{
GLuint cubevertex;
GLuint trianglevertex;
}VBHandlers;

然后像这样使用过程:

glGenBuffers(2, &VBHandlers);

我得到的错误:

error C2664: 'void (GLsizei,GLuint *)' : cannot convert parameter 2 from 'main::VertexHandlers *' to 'GLuint *'
2> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
2>C:\Documents and Settings\Owner\My Documents\Downloads\OpenGL-tutorial_v0003\playground\playground.cpp(181): error C2664: 'void (GLsizei,GLuint *)' : cannot convert parameter 1 from 'main::VertexHandlers *' to 'GLsizei'
2> There is no context in which this conversion is possible

我不习惯“类型转换”,几乎什么都不知道,但是当涉及到指针时,我认为 (&) 运算符将获取创建的局部变量的地址。希望我能得到一些帮助,谢谢。

最佳答案

glGenBuffers() 需要一个 GLuint 数组,而不是指向恰好连续有两个 GLuint 的对象的指针.这就是编译器提示它的原因。是的,它们在您的机器上可能具有相同的内存表示,但在另一台机器上可能并非如此。

如果你想将 glGenBuffers() 的结果存储到一个结构中,你可以这样做:

GLuint buffers[2];
glGenBuffers(2, buffers);
VBHandlers.cubevertex = buffers[0];
VBHandlers.trianglevertex = buffers[1];

假设 glGenBuffers 不会失败,这是最安全、可移植的方法。

关于c++ - 将指针传递给结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9049499/

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