I am trying to move from an old 2d program (Mac OSX) to 3d and now need to convert some code that tested whether a sprite was inside a (flat) region. The region was created previously by using Quickdraw commands (ie ovals and rects) into a Rgn. Then the test was
if ( PtInRgn( spritePoint, myRegion ) )…
where spritePoint was the x,y coordinate of the sprite.
Is it possible to use a similiar approach under OpenGL ??
IMO you should solve these tests with math in your application. You could go ahead and (ab)use occlusion queries or “selection” to implement intersection tests and the like, but I wouldn’t recommend it. It’s pretty hairy to do, especially if you’re relatively new to OpenGL, and it just won’t be as efficient as an application side solution.
Finding out whether a point is inside a circle is just a vector subtraction, a dot product and a comparison. I don’t know anything about QuickDraw, but I suspect that it performs these tests in software as well.
Many thanks for this reply. It sounds like I need to constrain the region to a simple shape (circle, oval, lozenge) for this approach to work. In this case I can do that so it’s over to the maths now. Thanks again.