我试图使用glSelectBuffer(GLsizei大小,GLuint *缓冲区)方法以稍微不同的方式选择对象,然后我相信在OpenGL 3.1的C++支持。如果我按照在线指定的方式执行所有操作,选择会很好。OpenGL选择缓冲区 - 使用指向对象的指针而不是未签名的Int?
而不是GLuint *,我想实际存储指针到我的图形对象本身在选择缓冲区。这将允许我根据包含指向该对象的指针的选择轻松发出信号。当GLuint的大小和指向我的对象(x86)的指针的大小一致时,似乎它可以正常工作,但似乎当它们不在时会中断(x64。)
我可以完成此操作与另一个步骤,但我宁愿不必排队选择ID - >对象指针,如果OpenGL将支持这种机制的选择与其他数据类型。
正在尝试使用OpenGL的选择机制吗? (最好在OpenGL 3.1中,但未来的版本也适用。)
我的问题是否有意义?我在我的解释中错过了什么吗?到目前为止,我试图让选择缓冲区花费很长时间而不是整数,并且我收到一个类型检查错误(如预期的那样)。另外,我没有看到glSelectBuffer()的任何重载方法,这让我觉得这种方法不可能。我查看了gl.h以查看typedef并更多地了解OpenGL的类型。我也看过堆栈溢出类似的问题 - 我很抱歉,如果同样的问题已被问及我错过了。
如果'sizeof(GLuint *)> sizeof(GLuint)',我认为你将不得不使用散列表。 –
@Minging Duck - 谢谢,如果我必须自己排列这些内容,散列将会是一条路,因为我怀疑DeadMG的有用评论有助于加强。 –
或者你断言所有被指向的对象有一些hackery有16个字节对齐,并且断言你的内存地址都将小于16GB。 –