Hi, did you tried using shaders?
I think (I say "think" because my natural language is spanish and maybe I didn't get exactly what you are saying) I had the same problem cropping textures. I didn't want to draw it twice, and the solution I found was using shaders. If you are not into shaders, you can look at chapter 8 "using shaders" from "mastering openFrameworks - creative code demystified" book. At the begining of the chapter, there is a very simple example on how to implement a basic shader to invert colors of the texture. You are not interested in changing colors, I know, but is a simple way to know how to implement a basic shader. Then, you have to change some code in the vertex shader file to change the view scale. Changing the scale and position, you can "crop" a texture. I did this and have good results in performance.
For example, to change the scale, you should change this line (in the example showed in the book):
gl_TexCoord = gl_MultiTexCoord0;
with these ones:
gl_TexCoord = gl_MultiTexCoord0 * scale;
That would return a "cropped" version of the original texture (half width and height). You cand adjust the size by changing the scale parameters. And to change the position you will have to do it in the fragment shader file (not in here, the vertex shader file).
Let me know if this approach works for you, or if you need more help. And sorry if I didn't understand well and this has nothing to do with what you were asking.