I'm attempting to draw in orthographic mode with OpenGL ES, and the point (0,0) is in the lower-left corner of the screen. However, I want to make it be in the upper-left hand corner.
Here's where I'm setting things up in my Android app:
public void onSurfaceChanged(final GL10 gl, final int width, final int height) {
assert gl != null;
// use orthographic projection (no depth perception)
GLU.gluOrtho2D(gl, 0, width, 0, height);
}
I tried changing the above call in many ways, including:
GLU.gluOrtho2D(gl, 0, width, 0, height);
GLU.gluOrtho2D(gl, 0, width, 0, -height);
GLU.gluOrtho2D(gl, 0, width, height, 0);
GLU.gluOrtho2D(gl, 0, width, -height, 0);
I also tried playing with the viewport to no avail:
public void onSurfaceChanged(final GL10 gl, final int width, final int height) {
assert gl != null;
// define the viewport
gl.glViewport(0, 0, width, height);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
// use orthographic projection (no depth perception)
GLU.gluOrtho2D(gl, 0, width, 0, height);
}
And again, I tried playing with the viewport settings to no avail:
gl.glViewport(0, 0, width, height);
gl.glViewport(0, 0, width, -height);
gl.glViewport(0, height, width, 0);
gl.glViewport(0, -height, width, 0);
Any clues on how to get the point (0,0) to the top-left of the screen? Thanks!
How about:
glViewport(0, 0, width, height);
gluOrtho2D(0, width, height, 0);
The glViewport call only sets the viewport in device coordinates. That is that of your window system. The glOrtho (gluOrtho2D) calls sets the coordinate mapping from world coordinates to device coordinates.
See:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With