缩放图形会导致游戏停止渲染

时间:2013-05-21 03:46:07

标签: java zoom transform render 2d-games

我正在用Java编写一个(目前相当简单)自上而下的2D游戏,并且在实现缩放时遇到了麻烦。

似乎我可以扩展的唯一方法是减少我的宽度和高度,并将乘法版本提供给setPreferredSize()。我想在渲染时使用AffineTransform来缩放我的Graphics2D,但是包括g2d.setTransform(transformer);行会将所有内容呈现为空图块。

无: enter image description here 附: enter image description here

我也尝试过我的课程来处理平铺/精灵渲染,将宽度和高度的倍增/分割值相加到完全相同的结果。有什么想法吗?

这是我的渲染方法:

    bs = getBufferStrategy();
    if (bs == null) {
        createBufferStrategy(3); // woo, triple buffering!
        return;
    }

    transformer.scale(scale, scale);

    // other stuff here . . . 

    // draw screen.pixels to pixels
    for (int i = 0; i < pixels.length; i++) {
        pixels[i] = screen.pixels[i];
    }

    // draw
    g2d = (Graphics2D)bs.getDrawGraphics();
    g2d.setTransform(transformer);
    {
        g2d.drawImage(image, 0, 0, width, height, null);
        /* g.setColor(Color.WHITE);
         * g.setFont(new Font("Veranda", 0, 50));
         * g.drawString("B: " + Mouse.b(), 80, 80);
        */
    }
    g2d.dispose();

    bs.show(); // blit/show buffer

    Toolkit.getDefaultToolkit().sync();

我正在使用Eclipse IDE而Java1.6上没有预制的游戏引擎。我正在JFrame中渲染到Canvas。

1 个答案:

答案 0 :(得分:0)

我会选择Slick2d http://www.slick2d.org/

它有自己的Image类,它处理重新调整图像大小的方式非常容易使用。