1

フルスクリーンウィンドウを開くようにしましたが、アプリケーションを終了するためのボタンを作成するにはどうすればよいですか?

また、学ぶべき良いチュートリアルを知っていますか。なかなか見つからない?

最後に、C ++でJavaを操作する方法を学んだopenglコードを使用できますか、それともopenglは完全に異なりますか?

これは私が持っているコードです:

package game;

import static org.lwjgl.opengl.GL11.*;
import org.lwjgl.opengl.*;
import org.lwjgl.*;

public class Main {

    public Main() {
        try {
            Display.setDisplayMode(Display.getDesktopDisplayMode());
            Display.setFullscreen(true);
            Display.create();
        } catch(LWJGLException e) {
            e.printStackTrace();
        }



    }
}
4

2 に答える 2

1

lwjglは、ボタンなどの高レベルのウィジェットを提供しません。gl呼び出しを使用してボタンを描画する必要があります(ボタンの画像をクワッドのテクスチャとして使用します。テクスチャを試す前に、色付きの長方形から始めます)。次に、ボタン領域でマウスクリックイベントを確認する必要があります。これを単純化するために、lwjglの上に高レベルのライブラリを使用することを検討することをお勧めします。

于 2012-05-23T00:02:09.780 に答える
0

ボタンを描画して処理するために作成したコードを次に示します。

各ボタンの X、Y、テクスチャを指定でき、ボタンがクリックされると変数isClickedが true になります。アプリケーションを閉じるには、

if(EXITBUTTON.isClicked)
{
System.exit(0);
}

ボタン クラス: LWJGL と Slick Util が必要です。

import java.awt.Rectangle;
import java.io.IOException;

import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.GL11;
import org.newdawn.slick.Color;
import org.newdawn.slick.opengl.Texture;
import org.newdawn.slick.opengl.TextureLoader;
import org.newdawn.slick.util.ResourceLoader;


public class Button {

    public int X;
    public int Y;
    public Texture buttonTexture;
    public boolean isClicked=false;
    Rectangle bounds = new Rectangle();


    public void addButton(int x, int y , String TEXPATH){
        X=x;
        Y=y;
        try {
            buttonTexture = TextureLoader.getTexture("PNG", ResourceLoader.getResourceAsStream(TEXPATH));
            System.out.println(buttonTexture.getTextureID());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        bounds.x=X;
        bounds.y=Y;
        bounds.height=buttonTexture.getImageHeight();
        bounds.width=buttonTexture.getImageWidth();
        System.out.println(""+bounds.x+" "+bounds.y+" "+bounds.width+" "+bounds.height);
    }

    public void Draw(){
        if(bounds.contains(Mouse.getX(),(600 - Mouse.getY()))&&Mouse.isButtonDown(0)){
            isClicked=true;
        }else{
            isClicked=false;
        }
        Color.white.bind();
        buttonTexture.bind(); // or GL11.glBind(texture.getTextureID());

        GL11.glBegin(GL11.GL_QUADS);
            GL11.glTexCoord2f(0,0);
            GL11.glVertex2f(X,Y);
            GL11.glTexCoord2f(1,0);
            GL11.glVertex2f(X+buttonTexture.getTextureWidth(),Y);
            GL11.glTexCoord2f(1,1);
            GL11.glVertex2f(X+buttonTexture.getTextureWidth(),Y+buttonTexture.getTextureHeight());
            GL11.glTexCoord2f(0,1);
            GL11.glVertex2f(X,Y+buttonTexture.getTextureHeight());
        GL11.glEnd();
        }

    }
于 2013-03-23T01:31:39.943 に答える