I am a noob at the IMG forum and at OpenGL. I have started to design a simple interface for a Smartphone for my diploma thesis, using IMG’s SDK, and I try to implement picking for 2D objects using OpenGL ES 2.0. After spending sometime searching I decided (not sure if the right choice) to try color picking. I have 2 questions:
Can I assign different color to each object on the screen using the same shaders?
I am thinking to implement the picking in the RenderScene function calling 2 other draw functions; one with all texture etc turned off and one more which will have what I had ,before to try the picking, in the RenderScene function. Is that the right way to think or am I not even close?
As David has pointed out, reading back from colour buffers that the GPU has rendered can be quite costly.
As a more efficient solution to this problem, you can create a bounding box for every object in your scene, and then do a simple intersection test where you fire a ray from the pixel that was clicked/touched and determine which object that ray intersects with first. This is actually quite straight forward to implement. We already provide functions in our SDK to generate bounding boxes. You can then search through the bounding boxes for all objects in your scene to find those that the clicked point interacts with on an X & Y plane, then search through these objects to find out which one is closest to your camera.