2012-05-22 3 views
1

Я открыл окно с полным экраном, но теперь, как я могу создать кнопку для выхода из приложения?LWJGL - Как создать кнопку для закрытия приложения

Кроме того, вы знаете хорошие учебники для изучения. Кажется, я не могу найти много?

Наконец, могу ли я использовать код opengl, который я научился работать с java в C++, или что 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(); 
     } 



    } 
} 
+0

* «Могу ли я использовать код OpenGL, что я научиться работать с Java в C++ или является то, что OpenGL совершенно по-другому?» * - в OpenGL API такой же, используете ли вы LWJGL или C++, вы должны иметь не проблемы с использованием одного из них, изучая один из них. – Tim

+0

Знаете ли вы что-нибудь о том, какую функцию мне нужно вызвать, чтобы закрыть приложение из полноэкранного режима? – core16

+1

Display.setFullscreen (false); для выхода из полноэкранного режима или System.exit (0); для завершения приложения –

ответ

1

LWJGL не дает каких-либо виджетов высокого уровня, такие как кнопки. Вам нужно будет нарисовать кнопку с помощью gl-вызовов (используйте изображение кнопки как текстуру для квадроцикла). Начните с цветного прямоугольника перед тем, как попробовать текстуры). Затем вам нужно будет проверить события щелчка мыши в области кнопок. Вы можете захотеть использовать библиотеку более высокого уровня поверх lwjgl, чтобы упростить это.

+0

как создать кнопку с LWJGL? – core16

+0

Как использовать вызовы gl для этого – core16

+0

Существует хороший пример для рисования прямоугольника (= Quad) в вики LWJGL, который будет первым шагом: http://www.lwjgl.org/wiki/index .php? title = LWJGL_Basics_3_ (The_Quad) (обратите внимание на заключительную скобку в конце ссылки) –

0

Вот код, который я сделал, который рисует и обрабатывает кнопки.

Вы можете указать X, Y и текстуру каждой кнопки, а при нажатии кнопки переменная isClicked станет истинной. Что касается закрытия приложения, используйте

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

Button Класс: Вам нужно 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(); 
     } 

    } 
+0

Это старый вопрос, но спасибо! – core16

Смежные вопросы