0
그래서 저는 3D 게임을 만들고 3D로 2 차원에서 작업하고 있습니다.하지만 끝내기 전에 한 가지 문제가 있습니다. 텍스트를 그린 후에 2 차원 쿼드를 그릴 수 없습니까? 내 문제가 무엇인지 지금 여기텍스트를 그린 후에 쿼드를 그릴 수 없습니까?
public Text(Location loc, String text, float size, Color color){
try {
InputStream inputStream = ResourceLoader.getResourceAsStream("res\\AGENCYR.TTF");
Font awtFont2 = Font.createFont(Font.TRUETYPE_FONT, inputStream);
awtFont2 = awtFont2.deriveFont(size);
font = new TrueTypeFont(awtFont2, false);
} catch (Exception e) {
e.printStackTrace();
}
c = new org.newdawn.slick.Color(color.red, color.green, color.blue);
this.loc = loc;
this.text = text;
this.size = size;
}
public void draw(){
font.drawString(loc.x, loc.y, text, c);
if (td != null){
td.draw();
}
}
그리고있다 :
public void changeto2D() {
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, Display.getWidth(), Display.getHeight(), 0, 1, -1);
glMatrixMode(GL_MODELVIEW);
GL11.glViewport(0, 0, Display.getDisplayMode().getWidth(), Display.getDisplayMode().getHeight());
}
그리고 텍스트를 그릴 :
changeto2D();
for (Face2D face : tds){
face.initializeEdges();
GL11.glBegin(GL11.GL_QUADS);
GL11.glColor4f(face.c.red, face.c.green, face.c.blue, (float) Math.sin(Math.toRadians(face.transparency)));
for (Location l : face.edges){
GL11.glVertex2f(l.x, l.y);
}
GL11.glEnd();
}
for (Text t : texts){
t.draw();
}
fps++;
for (GUI gui : openGUIs){
gui.draw();
}
for (GUI gui : removing){
if (openGUIs.contains(gui)) openGUIs.remove(gui);
}
removing.clear();
이 changeTo2D();
에 대한 코드는 다음과 같습니다 다음은 렌더링 코드의 쿼드가 포함 된 GUI를 만들고 싶지만 다른 쿼드가 완벽하게 잘 맞았다 고 생각하지 않습니다. 나는 또한 쿼드가 전혀 그려지지 않을 텍스트를 그린 후에 모든 쿼드에 대한 코드를 넣으려고했다.
GUI와 같은 나머지 메소드를 모두 표시하고 특히 모두 그립니다. –
[비추천 OpenGL] (https://www.opengl.org/wiki/Legacy_OpenGL)을 사용하면 안됩니다. – elect
* 아무데도 그릴 수 없습니까? *, 또는 텍스트를 그렸던 위치 (잘, 뒤)에서만? 이 경우 텍스트의 투명 사각형이 z 버퍼를 엉망으로 만듭니다. 텍스트를 그리기 전에 z 버퍼 쓰기를 비활성화하고 나중에 활성화하십시오. – usr2564301