Can't understand camera behavior

Started by
2 comments, last by kalle_h 10 years, 9 months ago

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

Thanks for your time!

Advertisement

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

Blog: http://twiren.kapsi.fi/blog.html

Control


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.

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

This topic is closed to new replies.

Advertisement