我想制作自己的简单游戏用户界面,我想我知道主要内容是如何完成的。问题是我不知道如何在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