我在 OpenGL 中遇到颜色选择和抗锯齿问题。当 AA 被激活时,来自 glReadPixels 的结果在对象边缘和对象交叉点上显然是错误的。例如:
我在盒子 #32 (RGBA: 32, 0, 0, 0) 附近渲染了一个盒子 #28 (RGBA: 28, 0, 0, 0)。使用 AA,由于 AA 算法,我可以在立方体和三角形重叠的地方得到错误的 ReadPixel 值(例如 30),或者在盒子边缘上的值 14。
我有大约 400 万件我需要能够挑选的物品(这是一个拼图游戏)。能够按形状选择对象至关重要。
我尝试使用 glDisable(GL_MULTISAMPLE) 禁用 AA,但它不适用于某些 AA 模式(我读到它取决于 AA 实现 - SS、MS、CS ..)
那么,我该如何选择一个底层对象呢?
- 暂时禁用AA的方法?
- 使用不同的缓冲区甚至渲染上下文?
- 还有什么建议吗?