このチュートリアルを使用してゲームループを作成しようとしています。
以下に示すように、これを最初のアクティビティクラスに実装しようとしましたが、いくつかの問題が発生しました。示されているようにフルクリーンでタイトル機能をリクエストしていませんが、取得できず、requestRenderが機能しません。
「running」がfalseに設定されている場合、ゲームループはスキップされ、レンダラーは1つのフレームをレンダリングします(rendermodeはdirtyに設定されています)
これは、running=trueの場合に行われることではありません。
import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.util.Log;
import android.view.Window;
import android.view.WindowManager;
public class Practice extends Activity {
private Input input;
private GLSurfaceRenderer glSurfaceRenderer;
private final static int maxFPS = 30;
private final static int maxFrameSkips = 5;
private final static int framePeriod = 1000 / maxFPS;
public final static String TAG = "input";
public boolean running = true;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
input = new Input(this);
setContentView(input);
long beginTime;
long timeDiff;
int sleepTime;
int framesSkipped;
sleepTime = 0;
while (running) {
Log.d(TAG, "gameRunning");
beginTime = System.currentTimeMillis();
framesSkipped = 0;
this.input.update();
this.input.requestRender();
timeDiff = System.currentTimeMillis() - beginTime;
sleepTime = (int)(framePeriod - timeDiff);
if (sleepTime > 0) {
try{
Thread.sleep(sleepTime);
}catch(InterruptedException e){}
}
while(sleepTime < 0 && framesSkipped < maxFrameSkips){
this.input.update();
sleepTime += framePeriod;
framesSkipped++;
Log.d(TAG, "Frames Skipped");
}
}
}
}
現時点では、ゲームロジックは正常に更新されていますが、レンダラーはまったくレンダリングしていません(黒い画面のみ)
これはコードの単純な再シャッフルであると確信していますが、誰か提案がありますか?