You can use pretty much any method you'd use in any other engine/framework/api. After all it all boils down to some math or an algorithm.
If you're wanting this to be done in real-time I'd probably recommend implementing it as a post-processing shader. You can see the postprocessing example to get a general idea about the setup, and then a quick google for "dithering shader opengl" gives lots of results on what the actual dithering shader should look like.