2012-05-17 28 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類...