OpenGL选择缓冲区-使用指向对象的指针而不是Unsigned Int

OpenGL Selection Buffer - Use A Pointer to the Object Instead of an Unsigned Int?

本文关键字:指针 Int Unsigned 对象 缓冲区 选择 OpenGL      更新时间:2023-10-16

我试图使用glSelectBuffer(GLsizei大小,GLuint * buffer)方法以稍微不同的方式选择对象,然后我相信在c++中支持OpenGL 3.1。

我想在选择缓冲区中存储指向图形对象本身的指针,而不是GLuint*。这将允许我轻松地发出基于选择的信号,其中包含指向该对象的指针。当GLuint的大小和指向我的对象(x86)的指针的大小对齐时,它似乎会正常工作,但当它们不对齐时,它似乎会中断(x64.)

我可以用另一个步骤完成这一点,但如果OpenGL将支持这种与其他数据类型的选择机制,我宁愿不必对齐选择ID ->对象指针。

是什么我试图做可能使用OpenGL的选择机制?(最好在OpenGL 3.1中,但未来的版本也适用。)

我的问题有意义吗?我的解释遗漏了什么吗?到目前为止,我已经尝试让选择缓冲区接受长整数而不是整型,并且我收到了一个类型检查错误(正如预期的那样)。此外,我没有看到glSelectBuffer()的任何重载方法,这使我认为这种方法是不可能的。我查看了gl.h以查看类型并更多地了解OpenGL的类型。我也看了类似的问题Stack Overflow -我很抱歉,如果同样的问题已经问了,我错过了它。

最好在OpenGL 3.1中,但未来的版本也适用

选择模式已从OpenGL-3核心和更高版本中删除。OpenGL是用来绘图的,选择模式总是会退回到软件模式,也就是说,它不是HW加速的。

我的建议是:不要用它