我想製作自己的簡單遊戲用戶界面,我想我知道主要內容是如何完成的。問題是我不知道如何在3D視圖中使用屏幕座標繪製簡單的二維四邊形?這甚至有可能嗎?也許我應該以另一種方式繪製遊戲用戶界面?沒有使用庫的遊戲用戶界面
請不要推薦任何庫。我想了解它是如何完成的,而不是使用現有的東西。
我想製作自己的簡單遊戲用戶界面,我想我知道主要內容是如何完成的。問題是我不知道如何在3D視圖中使用屏幕座標繪製簡單的二維四邊形?這甚至有可能嗎?也許我應該以另一種方式繪製遊戲用戶界面?沒有使用庫的遊戲用戶界面
請不要推薦任何庫。我想了解它是如何完成的,而不是使用現有的東西。
既然你包括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();
這給了你與分辨率無關渲染與紋理座標的四邊形。因此,如果您以800x600的比例玩遊戲,那麼四分之一將會是一個尺寸,但是如果您以1024x768分辨率播放,它會自動增長以填充屏幕的相同比例區域。
如果你真的想直接在屏幕座標上書寫,那麼你可以設置你的glOrtho來代替(例如範圍從0.0到800.0)。但不建議。
這個四邊形被繪製出來,但是它後面沒有三維視圖 – Qualphey
假設他做了第一步,那麼它會在它後面顯示。 –
將投影設置爲正交使用 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類...
作爲一個10年的遊戲行業資深人士,我可以說它的做法是使用現有的庫。除非你的計劃是創建一個UI界面庫。 – Almo
爲什麼我會用五個簡單的按鈕庫? – Qualphey
嗯,我認爲最困難的事情是我在這裏問的。其他的東西很簡單:繪製一個四元組,如果(鼠標座標在四元組中){if(mousedown){do something}} – Qualphey