2016-07-09 3 views
0

UnicodeFont.drawString()을 사용하면 LWJGL 응용 프로그램의 화면에 렌더링 된 다른 것이 사라지는 원인이 있는지 알 수 없습니다. 필자의 경우, 프로그램은 삼각형과 일부 텍스트를 그려야 만 테스트 할 수 있지만 그 대신 삼각형이 사라지기 전에 삼각형이 표시 될 텍스트 만 남기고 표시됩니다. drawString() 호출이 제거되면 삼각형이 정상적으로 나타납니다.Slick2D UnicodeFont drawstring이 화면의 나머지 부분을 제거합니다.

 UnicodeFont font = new UnicodeFont(new java.awt.Font("Times New Roman", java.awt.Font.PLAIN, 24)); 
     font.getEffects().add(new ColorEffect(java.awt.Color.WHITE)); 
     font.addAsciiGlyphs(); 
     try { 
      font.loadGlyphs(); 
     } catch (SlickException e) { 
      e.printStackTrace(); 
     } 

그런 다음 렌더링 루프에서 이것을 호출 다음과 같이

내가 글꼴을 설정 내 문제는 가능으로 엉망 업 막아야처럼

 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
     glClearColor(0, 0, 0, 0); 

     glColor3f(1, 1, 1); 

     glEnableClientState(GL_VERTEX_ARRAY); 
     glBindBuffer(GL_ARRAY_BUFFER, fbid); 
     glVertexPointer(2, GL_FLOAT, 0, 0); 

     glEnableClientState(GL_COLOR_ARRAY); 
     glBindBuffer(GL_ARRAY_BUFFER, fbid2); 
     glColorPointer(3, GL_FLOAT, 0, 0); 

     glDrawArrays(GL_TRIANGLES, 0, 4); 
     font.drawString(100, 300, "Test"); 

     glBindBuffer(GL_ARRAY_BUFFER, 0); 
     glDisableClientState(GL_VERTEX_ARRAY); 
     glDisableClientState(GL_COLOR_ARRAY); 

     DisplayManager.update(); 

답변

0

그래서 보이는/비활성화 텍스처.

glDisable(GL_BLEND); 

drawString(...)에 호출하기 전에이 추가 : 내 렌더링 루프의 시작 부분에 다음을 추가하여 해결

glEnable(GL_BLEND); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA): 
관련 문제