2012-05-17 25 views
-3

我想制作自己的简单游戏用户界面,我想我知道主要内容是如何完成的。问题是我不知道如何在3D视图中使用屏幕坐标绘制简单的二维四边形?这甚至有可能吗?也许我应该以另一种方式绘制游戏用户界面?没有使用库的游戏用户界面

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

+2

作为一个10年的游戏行业资深人士,我可以说它的做法是使用现有的库。除非你的计划是创建一个UI界面库。 – Almo

+0

为什么我会用五个简单的按钮库? – Qualphey

+0

嗯,我认为最困难的事情是我在这里问的。其他的东西很简单:绘制一个四元组,如果(鼠标坐标在四元组中){if(mousedown){do something}} – Qualphey

回答

2

既然你包括LWJGL标签,这是怎么了通常以OpenGL做的一般,这应该正常工作对你来说,太:

  1. 渲染你的潜在的游戏场景s通常是
  2. 设置视图,以便您具有可以在场景顶部渲染的正交视图。它的单位范围从-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); 
    
  3. 从-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(); 
    

这给了你与分辨率无关渲染与纹理坐标的四边形。因此,如果您以800x600的比例玩游戏,那么四分之一将会是一个尺寸,但是如果您以1024x768分辨率播放,它会自动增长以填充屏幕的相同比例区域。

如果你真的想直接在屏幕坐标上书写,那么你可以设置你的glOrtho来代替(例如范围从0.0到800.0)。但不建议。

+0

这个四边形被绘制出来,但是它后面没有三维视图 – Qualphey

+0

假设他做了第一步,那么它会在它后面显示。 –

1

将投影设置为正交使用 GLU.gluOrtho2D(0f,glutScreenWidth,0f,glutScreenHeight);

这是JBullet如何设置为文本绘制投影(他们使用1 z坐标中FontRenderer):

// See http://www.lighthouse3d.com/opengl/glut/index.php?bmpfontortho 
public void setOrthographicProjection() { 
    // switch to projection mode 
    gl.glMatrixMode(GL_PROJECTION); 

    // save previous matrix which contains the 
    // settings for the perspective projection 
    gl.glPushMatrix(); 
    // reset matrix 
    gl.glLoadIdentity(); 
    // set a 2D orthographic projection 
    gl.gluOrtho2D(0f, glutScreenWidth, 0f, glutScreenHeight); 
    gl.glMatrixMode(GL_MODELVIEW); 
    gl.glLoadIdentity(); 

    // invert the y axis, down is positive 
    gl.glScalef(1f, -1f, 1f); 
    // mover the origin from the bottom left corner 
    // to the upper left corner 
    gl.glTranslatef(0f, -glutScreenHeight, 0f); 
} 

https://github.com/affogato/JBullet-QIntBio-Fork/blob/master/src/com/bulletphysics/demos/opengl/,并期待在FontRenderer和LwjglGL类...