• FEATURED

View more

View more

View more

### Image of the Day Submit

IOTD | Top Screenshots

### The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

# Can't understand camera behavior

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

3 replies to this topic

### #1GuardianX  Members

Posted 13 July 2013 - 01:17 PM

Hello.

I'm quite new person in OpenGL graphics. Recently I started to learn OpenGL ES 2.0 technology to be able to make some games on my Android devices. I have a few questions to clear some things up for me.

1. Where can I find comprehensive OpenGL ES 2.0 tutorials, or book for making games on Android by means of Java/Android SDK, not C++/NDK? A lot of resources are dedicated to OpenGL ES 1.0 technology, not 2.0 one. In fact it's very hard to find complete tutorials for 2.0 with good non-contradictory code base.

2. Why there are almost no 2.0 tutorials? Is it any popular? Google says that devices starting from Android 2.2 can use this new version, so if no one uses it, why? At the first glance it gives more flexible way of doing things.

3. I'm a bit confused with the way matrix multiplication system works.

Do I have to use:

Matrix.setIdentityM( mModelMatrix, 0 );
Matrix.multiplyMM( mMVPMatrix, 0, mViewMatrix, 0, mModelMatrix, 0 );
Matrix.multiplyMM( mMVPMatrix, 0, mProjectionMatrix, 0, mMVPMatrix, 0 );

To get simple mMVPMatrix = mModelMatrix * mMviewMatrix * mProjectionMatrix equation done? Can I use this result matrix as uniform variable in shader?

4. Is this the right code to rotate my object around Y axis by some angle 'mAngle':

Matrix.setRotateM( mRotationMatrix, 0, mAngle, 0.0f, -1.0f, 0.0f );
Matrix.setIdentityM( mModelMatrix, 0 );
Matrix.multiplyMM( mModelmatrix, 0, mRotationMatrix, 0, mModelMatrix, 0 );
Matrix.multiplyMM( mMVPMatrix, 0, mViewMatrix, 0, mModelMatrix, 0 );
Matrix.multiplyMM( mMVPMatrix, 0, mProjectionMatrix, 0, mMVPMatrix, 0 );

To me it seems legit, but I get really weird results on my phone when I try to render simple textured box. Top, bottom sides of the box rotate around camera, not the opposite way.

This is my renderer and simple textured cube classes:

http://pastebin.com/Phd2ym3Z - renderer

http://pastebin.com/i9rb3r6v - textured cube

Edited by GuardianX, 13 July 2013 - 01:18 PM.

### #2bioglaze  Members

Posted 16 July 2013 - 10:58 AM

2. It's very popular, because almost all modern games use shaders, and to get shaders with OpenGL ES you must use 2.0 or 3.0 which is not yet widely supported.

3. Yes, you can use the resulting matrix in a shader.

Aether3D Game Engine: https://github.com/bioglaze/aether3d

### #3ihatesegfault  Members

Posted 18 July 2013 - 12:50 PM

Top, bottom sides of the box rotate around camera, not the opposite way.

You need to translate the box away from the camera before rotating the box. It rotates the box around itself, so if the center of the box is at the camera (like it is without a translation) then it rotates around the camera.

### #4kalle_h  Members

Posted 18 July 2013 - 04:43 PM

There is not that much gles2.0 spesific in shader or in mobile development in general. Just learn something that you can get to start and then any general shader book will teach you. LibGDX is good start for Java android development and author of that framework is also writed book about Android development http://www.amazon.com/Beginning-Android-Games-Mario-Zechner/dp/1430230428

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.