Java 每次游戏呈现一个好主意时设置缓冲策略吗?

Java 每次游戏呈现一个好主意时设置缓冲策略吗?,java,graphics,render,bufferstrategy,Java,Graphics,Render,Bufferstrategy,出于某种原因,每当渲染游戏时,每个人都会将他们的BufferStrategy设置为画布中的BufferStrategy BufferStrategy bs; Graphics2D g; private void render() { bs = window.getCanvas().getBufferStrategy(); if (bs == null) { window.getCanvas().createBufferStrategy(

出于某种原因,每当渲染游戏时,每个人都会将他们的BufferStrategy设置为画布中的BufferStrategy

BufferStrategy bs;
Graphics2D g;

private void render() {
        bs = window.getCanvas().getBufferStrategy();

        if (bs == null) {
            window.getCanvas().createBufferStrategy(3);
            return;
        }

        g = (Graphics2D) bs.getDrawGraphics();

        bs.show();
        g.dispose();
}

// When thread starts
public void run() {
    while (running) {
       //Game loop stuff here.
       render();
      }
    }

你能不能只设置一次,而不是每次重新渲染游戏?

首先,你需要了解翻页的概念。其次,只有当一个策略不存在(或者由于某种原因而无效)时,您的代码才会创建一个新的策略。如果您阅读了JavaDocs和教程示例,您会发现(通常)这是实现这一目标的推荐方法。请看一个基本示例。按照您所看到的方式执行此操作的原因之一是渲染线程可能在实现窗口之前启动,这是唯一可以执行策略的时间created@MadProgrammer我理解这一点,但每次调用该方法时,bufferStrategy都会再次设置为canvas bufferStrategy。不,不是<只有当
getBufferStrategy
的结果为
null
(尚未创建)时,才会调用code>createBufferStrategy。因此,是的,您每次都必须调用
getBufferStrategy
,因为它可能会改变,我的意思是bs再次被设置为BufferStrategy。(bs=window.getCanvas().getBufferStrategy();)