Java LWJGL-从3D切换到2D以在没有外部库的情况下渲染文本
我想通过切换到2D场景,然后切换回3D,在屏幕上渲染2D四边形。 除了LWJGL,我不想使用任何外部图书馆 到目前为止,我得到的是:Java LWJGL-从3D切换到2D以在没有外部库的情况下渲染文本,java,text,fonts,3d,lwjgl,Java,Text,Fonts,3d,Lwjgl,我想通过切换到2D场景,然后切换回3D,在屏幕上渲染2D四边形。 除了LWJGL,我不想使用任何外部图书馆 到目前为止,我得到的是: private static void renderLetter(char c, float x, float y) { int character = c+1; GL11.glPushMatrix(); setOrthoOn(); GL11.glTranslatef(x, y, 0); float[] xy = ga
private static void renderLetter(char c, float x, float y) {
int character = c+1;
GL11.glPushMatrix();
setOrthoOn();
GL11.glTranslatef(x, y, 0);
float[] xy = game.getResourceManager().getSpriteSheets().get(fontSheet).getXYForCell(character);
float cellx = game.getResourceManager().getSpriteSheets().get(fontSheet).getCell_sizeX();
float celly = game.getResourceManager().getSpriteSheets().get(fontSheet).getCell_sizeY();
float xx = xy[0];
float yy = xy[1];
GL11.glBindTexture(GL11.GL_TEXTURE_2D, game.getResourceManager().getTextures().get(game.getResourceManager().getSpriteSheets().get(fontSheet).getTextureID()));
GL11.glBegin(GL11.GL_QUADS);
GL11.glTexCoord2f(xx, yy);
GL11.glVertex2f(0,0);
GL11.glTexCoord2f(xx+cellx, yy);
GL11.glVertex2f(fontSize,0);
GL11.glTexCoord2f(xx+cellx, yy+celly);
GL11.glVertex2f(fontSize,fontSize);
GL11.glTexCoord2f(xx, yy+celly);
GL11.glVertex2f(0,fontSize);
GL11.glEnd();
GL11.glBindTexture(GL11.GL_TEXTURE_2D, 0);
setOrthoOff();
GL11.glPopMatrix();
}
public static void setOrthoOn()
{
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
GL11.glClearDepth(1);
GL11.glViewport(0,0,1360,768);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, 1360, 768, 0, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glLoadIdentity();
}
public static void setOrthoOff()
{
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GLU.gluPerspective(game.getFieldOfView(), 1360f/768f, 0.1f, 1000);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glLoadIdentity();
GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glDepthFunc(GL11.GL_LEQUAL);
GL11.glHint(GL11.GL_PERSPECTIVE_CORRECTION_HINT, GL11.GL_NICEST);
}
第一种方法是渲染字母。我试图做的是调用SetOrthon切换到2D渲染,然后渲染四边形,然后调用setOrthoOff切换回3D
当我运行此代码时,它对我没有任何帮助。。我做错了什么?
注意:有些代码可能是无关的。我对OpenGL不是很有经验,但这对我很有用。我还建议您静态导入GL11。这样你就不必键入“GL11.BlaBlaBla”,只需键入“BlaBlaBla”即可。它不起作用。。我已经将我的方法内部转换为你给我的方法,但它不起作用。。我试着不绑定纹理,只是给四元体一个颜色,看看它是否至少渲染了四元体,但它没有…你可能需要添加
glDisable(GL_照明)代码>到那个开头。另外,如果窗口大小不是800x600,请将代码中的800和600更改为窗口大小。尝试禁用纹理glDisable(GL\u TEXTURE\u 2D)代码>那我就不知道了。我的代码对我有用,所以你在程序的早期做了一些不同的事情,但我不知道该告诉你什么。如果你想编写游戏,我建议你从零开始使用。只需向下滚动,直到找到“jogl-2.0………zip”,然后下载适用于您的操作系统的。我发现从地面开始建造发动机要比使用预制发动机容易得多。不过那只是我。