Java LWJGL-如何创建关闭应用程序的按钮
我已经让它打开了一个全屏窗口,但是现在我如何创建一个按钮让它退出应用程序呢 还有,你知道有什么好的教程要学吗。我似乎找不到多少 最后,我能用我所学的OpenGL代码和C++中的java进行交互吗?或者OpenGL完全不同? 这是我的代码:Java LWJGL-如何创建关闭应用程序的按钮,java,opengl,lwjgl,Java,Opengl,Lwjgl,我已经让它打开了一个全屏窗口,但是现在我如何创建一个按钮让它退出应用程序呢 还有,你知道有什么好的教程要学吗。我似乎找不到多少 最后,我能用我所学的OpenGL代码和C++中的java进行交互吗?或者OpenGL完全不同? 这是我的代码: package game; import static org.lwjgl.opengl.GL11.*; import org.lwjgl.opengl.*; import org.lwjgl.*; public class Main { pub
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();
}
}
}
lwjgl不提供任何高级小部件,如按钮。您需要使用gl调用绘制按钮(将按钮图像用作四边形的纹理。在尝试纹理之前,从彩色矩形开始)。然后,您需要检查按钮区域中的鼠标单击事件。您可能想考虑在LWJGL之上使用更高级别的库来简化这一点。
LWJGL不提供任何高级别小部件,如按钮。您需要使用gl调用绘制按钮(将按钮图像用作四边形的纹理。在尝试纹理之前,从彩色矩形开始)。然后,您需要检查按钮区域中的鼠标单击事件。您可能想考虑在LWJGL之上使用更高级别的库来简化这一点。
< P>这里是我绘制和处理按钮的一些代码。 您可以指定每个按钮的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();
}
}
下面是我编写的一些代码,用于绘制和处理按钮 您可以指定每个按钮的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();
}
}
“我能用C++学习C++中的java代码吗?还是OpenGL完全不同?”——无论使用LWJGL还是C++,OpenGL API都是一样的。一旦学习了其中一个,您应该不会有任何问题。您知道我需要调用什么函数才能从全屏模式关闭应用程序吗?Display.setFullscreen(false);退出全屏或系统。退出(0);要终止应用程序“我能使用我学习的用OpenC++语言编写的C++中的java代码还是OpenGL完全不同?”——无论使用LWJGL还是C++,OpenGL API都是一样的。一旦学习了其中一个,您应该不会有任何问题。您知道我需要调用什么函数才能从全屏模式关闭应用程序吗?Display.setFullscreen(false);退出全屏或系统。退出(0);要终止应用程序,如何使用LWJGL创建按钮?如何使用gl调用来完成此操作在LWJGL wiki上绘制矩形(=Quad)有一个很好的示例,这将是第一步:(请注意链接末尾的结束图标)如何使用LWJGL创建按钮?我如何使用gl调用来实现这一点在LWJGL wiki上绘制矩形(=Quad)有一个很好的示例,这将是第一步:(注意链接末尾的结束框)