Curtain
Curtain

Reputation: 1972

Orthographic projection in OpenGL

I'm trying to set an orthographic projection using gl.glOrthof...

However, it doesn't matter which values I pass into the function, the width and height seems to get constant float values and they don't match my glOrthof attributes.

My surfaceChanged code:

gl.glViewport(0, 0, w, h);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrthof(0.0f, 10.0f, 10.0f, 0.0f, 0.0f, 1.0f);

My draw code:

gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glBindTexture(GL10.GL_TEXTURE_2D, texture);  
((GL11Ext) gl).glDrawTexfOES(positionX, positionY, 0.0f, 1.0f, 1.0f);

Any ideas? Tell me if you need to know something.

Upvotes: 0

Views: 1306

Answers (1)

datenwolf
datenwolf

Reputation: 162164

glDrawTexfOES width and height parameters are in pixels, so instead of

((GL11Ext) gl).glDrawTexfOES(positionX, positionY, 0.0f, 1.0f, 1.0f);

you should use

((GL11Ext) gl).glDrawTexfOES(positionX, positionY, 0.0f, texture_width, texture_height);

The projection and modelview matrix influence only the positioning of the x,y position, not the texture scaling. Selecting the part of the texture to be used is done with the crop rectangle.

Upvotes: 2

Related Questions