Java 不使用库的游戏用户界面

Java 不使用库的游戏用户界面,java,lwjgl,Java,Lwjgl,我想做我自己的简单游戏界面,我想我知道主要的东西是怎么做的。问题是我不知道如何在3D视图中使用屏幕坐标绘制简单的2D四边形?这可能吗?也许我应该用另一种方式画游戏界面 请不要推荐任何图书馆。我想了解它是如何完成的,而不是使用现有的东西。使用将投影设置为正交 GLU.gluOrtho2D(0f,GluScreenWidth,0f,GluScreenHeight) 这是JBullet为文本图形设置投影的方式(他们在FontRenderer中使用1作为z坐标): 请参阅并查看FontRenderer和

我想做我自己的简单游戏界面,我想我知道主要的东西是怎么做的。问题是我不知道如何在3D视图中使用屏幕坐标绘制简单的2D四边形?这可能吗?也许我应该用另一种方式画游戏界面


请不要推荐任何图书馆。我想了解它是如何完成的,而不是使用现有的东西。

使用将投影设置为正交 GLU.gluOrtho2D(0f,GluScreenWidth,0f,GluScreenHeight)

这是JBullet为文本图形设置投影的方式(他们在FontRenderer中使用1作为z坐标):


请参阅并查看FontRenderer和lwjgl类…

因为您包含了lwjgl标记,所以通常在OpenGL中是这样做的,这对您来说也应该很好:

  • 像往常一样渲染基本游戏场景
  • 设置视图,以便具有正交视图,可以在场景顶部进行渲染。它的单位范围从-1.0f、-1.0f(屏幕左上方)到1.0f、1.0f(屏幕右下方),并将绘制在已渲染的游戏场景下方的顶部

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(-1, 1, -1, 1, -1, 1);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glDisable(GL_DEPTH_TEST);
    
  • 使用-1.0f到1.0f的坐标渲染纹理四边形

    glBegin(GL_QUADS);
    // <== Bind your texture, material for your GUI button here
    glVertex3f(-0.5, 0.5, 0);
    glVertex3f(0.5, 0.5, 0);
    glVertex3f(0.5, -0.5, 0);
    glVertex3f(-0.5, -0.5, 0);
    glEnd();
    
    glBegin(GL_四边形);
    
    //作为一名10年的游戏行业老手,我可以说,这样做的方式是使用现有的库。除非你的计划是创建一个UI界面库。为什么我要用一个库来创建五个简单的按钮呢?我想最困难的是我在这里问的问题。另一件事很简单:画一个四边形,如果(鼠标坐标在四边形中){if(mousedown){do something}@user714965哦,你为什么问这个问题?如果你把模型和视图矩阵设置为单位矩阵,那么[-1,1]范围内的顶点坐标将对应于屏幕的宽度/高度,所以(-1,-1)将是左上角和(1,1)右下角绘制了四边形,但其后面没有3D视图。假设他执行了步骤1,则该视图将在其“后面”可见。
    glBegin(GL_QUADS);
    // <== Bind your texture, material for your GUI button here
    glVertex3f(-0.5, 0.5, 0);
    glVertex3f(0.5, 0.5, 0);
    glVertex3f(0.5, -0.5, 0);
    glVertex3f(-0.5, -0.5, 0);
    glEnd();