Jump to content

  • Log In with Google      Sign In   
  • Create Account

FREE SOFTWARE GIVEAWAY

We have 4 x Pro Licences (valued at $59 each) for 2d modular animation software Spriter to give away in this Thursday's GDNet Direct email newsletter.


Read more in this forum topic or make sure you're signed up (from the right-hand sidebar on the homepage) and read Thursday's newsletter to get in the running!


parnparn

Member Since 28 Jan 2012
Offline Last Active May 10 2012 08:13 PM

Topics I've Started

Problem with very simple game loop thread

02 May 2012 - 11:41 AM

Hello guys,

I'm learning android game development with Opengl ES and trying to implement a very simple game loop using a separated thread, that is basically just an infinite loop. When I try running the application on the emulator, it enters the infinite loop and doesn't do anything else.. the rendering thread does nothing..

I'm new to programming with threads but, even if the game loop thread is stuck in an infinite loop, isn't the render thread suppose to draw things on screen?

Here is the code of my surfaceview and game thread class (the render class is the triangle drawing example and works fine when I don't start the game thread..)

public class MainThread extends Thread {

private boolean running;
public void setRunning(boolean running) {
  this.running = running;
}
@Override
public void run() {
  while (running) {
  
  }
}
}

class GameSurfaceView extends GLSurfaceView {
	private GameRenderer mRenderer;
	private MainThread mThread;
	
	public GameSurfaceView(Context context){
		super(context);
		// Create an OpenGL ES 2.0 context.
		setEGLContextClientVersion(2);
		  
		// set the mRenderer member
		mRenderer = new GameRenderer();
		setRenderer(mRenderer);
		mThread = new MainThread ();
		// Render the view only when there is a change
		setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
	}
  
	@Override
	public void surfaceCreated(SurfaceHolder holder) {
	 // TODO Auto-generated method stub
	 super.surfaceCreated(holder);
	  
		mThread.setRunning(true);
		mThread.run();
	}
  

	public void surfaceDestroyed(SurfaceHolder holder) {
	 boolean retry = true;
	 while (retry) {
	  try {
	mThread.join();
   } catch (InterruptedException e) {
	// TODO Auto-generated catch block
	e.printStackTrace();
   }
   retry = false;
	 }
	}
  
}

This is a very basic example, the game loop is not supposed to do anything, I'm just trying to learn how to make it run while the rendering thread draws the triangle.

Thanks!

PARTNERS