LWJGL - Cómo crear un botón para cerrar la aplicación

Hice que se abriera una ventana de pantalla completa, pero ahora, ¿cómo puedo crear un botón para que salga de la aplicación?

Además, ¿conoces algún buen tutorial para aprender? Parece que no puedo encontrar muchos?

Por último, ¿puedo usar el código opengl que aprendí a trabajar con java en c ++ o ese opengl es completamente diferente?

Este es el código que tengo:

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();
        }



    }
}

preguntado el 22 de mayo de 12 a las 17:05

"¿puedo usar el código opengl que aprendí a trabajar con java en c ++ o opengl es completamente diferente?" - La API de OpenGL es la misma ya sea que use lwjgl o c ++, no debería tener problemas para usar cualquiera de las dos una vez que aprenda una de ellas. -

¿Sabría algo sobre qué función necesito llamar para cerrar la aplicación desde el modo de pantalla completa? -

Display.setFullscreen(falso); para salir de pantalla completa o System.exit(0); para cerrar la aplicación -

2 Respuestas

lwjgl no proporciona widgets de alto nivel, como botones. Deberá dibujar el botón usando llamadas gl (use la imagen del botón como textura para un quad. Comience con un rectángulo de color antes de probar las texturas). Luego, deberá verificar los eventos de clic del mouse en el área del botón. Es posible que desee considerar el uso de una biblioteca de nivel superior además de lwjgl para simplificar esto.

contestado el 23 de mayo de 12 a las 01:05

¿Cómo se crea un botón con LWJGL? - core16

¿Cómo uso las llamadas gl para hacer esto? core16

Hay un buen ejemplo para dibujar un rectángulo (=Quad) en la wiki de LWJGL, que sería el primer paso: lwjgl.org/wiki/index.php?title=LWJGL_Basics_3_(The_Quad) (tenga en cuenta el paréntesis de cierre al final del enlace) - Stefan Haustein

Aquí hay un código que hice que dibuja y maneja botones.

Puede especificar la X, Y y la textura de cada botón y cuando se hace clic en el botón, la variable isClicked se vuelve verdad En cuanto a cerrar la aplicación, use

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

Clase de botón: necesita LWJGL y 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();
        }

    }

respondido 23 mar '13, 03:03

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.