我使用带有以下代码的计时器
if (System.currentTimeMillis () - timer > 100) {
timer += 100;
draw = !draw;
}
if (draw) {
drawTexture (1, 15, getX() + 10, getY() + 5);
}
对于前几次执行,纹理以一致的速率绘制。每次执行都会延长时间。但是被打印的内容并没有改变?
渲染方法(每个循环)
public void render (double delta) {
glDisable(GL_TEXTURE_2D);
glViewport (0, 0, Engi.config.width, Engi.config.height);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glOrtho (0.0, Engi.config.width, Engi.config.height, 0.0, -1.0, 1.0);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
glEnable(GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glMatrixMode (GL_MODELVIEW);
glEnable (GL_TEXTURE_2D);
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor (0.0f, 0.0f, 0.0f, 0.0f);
glLoadIdentity ();
if (System.currentTimeMillis () - timer > 100) {
timer += 100;
draw = !draw;
}
if (draw) {
drawTexture (1, 15, getX() + 10, getY() + 5);
}
glfwSwapBuffers (Engi.config.windowID);
}
答案 0 :(得分:0)
不确定此代码的运行频率。 System.currentTimeMillis()返回的值仅在系统时钟节拍间隔更新,对于Windows通常为15ms。因此,如果您在紧密循环中调用它,则定时器以非常快的速率增加,其中currentTimeMillis()仅每15毫秒更新一次。也许您只想延迟(Thread.sleep(long)),然后确定是否绘制。