I want to draw many objects like rivers and roads with a region no drawn.
For example, some objects or parts of them inside a rectangle region can’t be shown, while others outside the rectangle will be showing.
I try do it with glClipPlane(). But it cuts the half-space of model, not a region.
Stencil is what you are looking for.
Basically you mark the stencil buffer with the pixels that you want to draw/not-draw on. This is done by rendering the regions with glColorMask(FALSE,FALSE,FALSE) and approriate combination of glStencilOp/glStencilFunc.
Then you switch to glColorMask(TRUE, TRUE, TRUE),
select the glStencilFunc/glStencilOp to select the pixels you want to render on and render your scene(rivers and roads).
Check the chapter in the red-book for the details.
Thanks,
Jacky