c++ - OpenGL 选择缓冲区 - 使用指向对象的指针而不是无符号整数?

标签 c++ opengl graphics

我正在尝试使用 glSelectBuffer(GLsizei size, GLuint * buffer) 方法以稍微不同的方式选择对象,然后我相信 C++ 支持 OpenGL 3.1。如果我按照在线指定的方式执行所有操作,则选择效果很好。

我想在选择缓冲区中实际存储指向我的图形对象本身的指针,而不是 GLuint*。这将使我能够根据包含指向该对象的指针的选择轻松发出信号。当 GLuint 的大小和指向我的对象的指针的大小 (x86) 对齐时,这似乎可以正常工作,但如果它们不对齐 (x64),它似乎会中断。

我可以通过另一个步骤完成此操作,但如果 OpenGL 支持使用其他数据类型的这种选择机制,我宁愿不必排列选择 ID -> 对象指针。

使用 OpenGL 的选择机制是否可以实现我正在尝试做的事情? (最好在 OpenGL 3.1 中使用,但 future 的版本也适用。)

我的问题有意义吗?我在解释中遗漏了什么吗?到目前为止,我已经尝试使选择缓冲区使用长整数而不是整数,并且我收到类型检查错误(正如预期的那样。)此外,我没有看到 glSelectBuffer() 的任何重载方法,这让我想到了这种方法不可能。我查看了 gl.h 以查看 typedef 并进一步了解 OpenGL 的类型。我还在 Stack Overflow 上查看了类似的问题 - 如果有人问过同样的问题但我错过了,我深表歉意。

最佳答案

Preferably in OpenGL 3.1, but future versions are applicable as well

选择模式已从 OpenGL-3 核心及更高版本中移除。 OpenGL 用于绘图,选择模式无论如何都会退回到软件模式,即没有硬件加速。

只是我的建议:不要使用它。

关于c++ - OpenGL 选择缓冲区 - 使用指向对象的指针而不是无符号整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7811291/

相关文章:

c++ - C++ 中的 n 位 2s 二进制到十进制

c++ - 具有不同纹理 UV 的矩形实例

graphics - 如果相机平面对齐,我需要纠正吗?

java - Graphics.drawimage 不工作 Java 8

java - Java 中的自定义字体

android - Qt 和 Android - 从图库中的图像获取路径

c++ - 无法调用dll文件中的线程

c++ - 在中断中使用 delayMicroseconds

opengl - 将 SSAO 与全局光和局部光相结合

macos - mac os 雪豹上的 freeglut 问题(通过 macports 构建良好)