0

こんにちは私はフルスクリーンゲームの始まりを作成しようとしていますが、問題が発生しています。青い背景に白いテキストを表示し、画面全体を800*600に変更したいと思います。問題は、中央に800 * 600のボックスがある画面(表示されていませんが、マウスの境界でわかります)が表示され、背景が黒になっていることです。


ここに画像の説明を入力してください


私のコード:

import java.awt.*;

import javax.swing.JFrame;
/**
 * Write a description of class Full here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Full extends JFrame 
{

   public static void main(String[] args){
     DisplayMode dm = new DisplayMode(800,600,16, DisplayMode.REFRESH_RATE_UNKNOWN);  
     Full full = new Full();
     full.run(dm);

    }
   public void run(DisplayMode dm){
     setBackground(Color.BLUE);  
     setForeground(Color.WHITE);
     setFont(new Font("Arial", Font.PLAIN,24));

     Screen s = new Screen();
     try{
        s.setFullScreen(dm,this);
        try{
            Thread.sleep(15000);
        }catch(Exception ex){}
        }finally{
         s.restoreScreen();   
        }
    }
   public void paint(Graphics g){
       if(g instanceof Graphics2D){
           Graphics2D g2 = (Graphics2D) g;

g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        }
       g.drawString("This is gonna be awesome!!",200,200);
    }
}

public class Screen
{
  private GraphicsDevice vc;
  Window myWindow;
  public Screen(){
      GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
      vc = env.getDefaultScreenDevice();
    }
  public void setFullScreen(DisplayMode dm, JFrame myWindow){
      myWindow.setUndecorated(true);
      myWindow.setResizable(false);
      vc.setFullScreenWindow(myWindow);

      if(dm != null && vc.isDisplayChangeSupported()){
          try{
             vc.setDisplayMode(dm); 
            }catch(Exception ex){}
        }
    }
  public Window getFullScreenWindow(){
      return vc.getFullScreenWindow();
    }
  public void restoreScreen(){
      Window w = vc.getFullScreenWindow();
      if(w != null){
          w.dispose();
        }
      vc.setFullScreenWindow(null);
    }
}
4

1 に答える 1

2

あなたが間違ったトレースをしているように見えるので、これは短い答えです:)

ゲームは OpenGL または DirectX を使用する必要があるため、グラフィック処理は GPU によって行われます。すべてのプラットフォームと互換性があるため、OpenGL を強くお勧めします。あなたが始めた方法では、ゲームは完全に CPU 上で実行されますが、これは良くありません。

LWJGL (LightWeight Java Game Library)を見てみましょう。これは、OpenGL を使用できるクロスプラットフォーム ライブラリです。チュートリアルにはグーグルが必要ですが、それだけの価値があります。ゲームのパフォーマンスが大幅に向上し、ゲームが本来あるべき姿になります。参考までに、Minecraft は LWJGL で作られています。

OpenGL を使用すると、いくつかの簡単な方法を使用してゲーム開発をすばやく開始できます。これは、最初のゲーム体験に適しています。後ほど、物事をより効率的に行う方法を見つけることになりますが、それでは情報が多すぎて開始できません:D
がんばってください!

于 2012-08-10T23:37:40.113 に答える