我在OpenGL中遇到了颜色拾取和抗锯齿的问题。当AA被激活时,glReadPixels的结果在对象边缘和对象交叉点上显然是错误的。例如:
我在长方体#32(RGBA:32,0,0,O)附近渲染长方体#28(RGBA:28,0,0,0)。使用AA,由于AA算法,我可能会在立方体和三角形重叠的地方得到错误的ReadPixel值(例如30),或者在方框边缘得到值14。
我有大约40万件物品需要挑选(这是一款拼图游戏)。能够按形状选择对象是至关重要的。
我曾尝试使用glDisable(GL_MULTISAMPLE)禁用AA,但它不适用于某些AA模式(我读到它取决于AA实现-SS、MS、CS..)
那么,我该如何选择底层对象呢?
- A way do temporary disable AA?
- Using a different buffer or even rendering context?
- Any other suggestion?