2014-02-19 1 views
0

ИТАК я решил, что если я изменю свою орфографическую матрицу системы координатпроблем с гладким 2d Юникода шрифтом

GL11.glOrtho(0, Strings.DISPLAY_WIDTH, Strings.DISPLAY_HEIGHT, 0, -1, 1);

вместо этого

GL11.glOrtho(0, Strings.DISPLAY_WIDTH, 0, Strings.DISPLAY_HEIGHT, -1, 1);

Я могу нарисовать струны гладкая правая сторона вверх, однако игра im building использует эту систему

GL11.glOrtho(0, Strings.DISPLAY_WIDTH, 0, Strings.DISPLAY_HEIGHT, -1, 1); 

и slick рисует вещи с вершиной матрицы 0, а нижняя - высотой дисплея, так или иначе, я могу повернуть или потянуть строки по-другому, не меняя систему координат игр?

вот моя строка рисунок класс

private Font javaFont; 
private UnicodeFont uniFont; 

public TextHandler(int letterSize) { 
    this.initHandler(letterSize); 
} 

private void initHandler(int size) { 
    this.javaFont = new Font("Times New Roman", Font.BOLD, size); 
    this.uniFont = new UnicodeFont(this.javaFont); 

    this.uniFont.getEffects().add(new ColorEffect(java.awt.Color.white)); 

    this.uniFont.addAsciiGlyphs(); 

    try { 
     this.uniFont.loadGlyphs(); 
    } catch (SlickException e) { 
     e.printStackTrace(); 
    } 
} 

public void drawString(String string, float x, float y) { 
    this.uniFont.drawString(x, y, string, Color.white); 
} 

и мой OPENGL код инициализации, если это помогает

GL11.glMatrixMode(GL11.GL_PROJECTION); 
    GL11.glLoadIdentity(); 
    GL11.glOrtho(0, Strings.DISPLAY_WIDTH, 0, Strings.DISPLAY_HEIGHT, -1, 1); 

    GL11.glMatrixMode(GL11.GL_MODELVIEW); 
    GL11.glEnable(GL11.GL_TEXTURE_2D); 
    GL11.glClearColor(0, 0, 1, 0); 
    GL11.glDisable(GL11.GL_DEPTH_TEST); 

ответ

0

Да, вы можете настроить систему рендеринга, где первый glOrtho вызов устанавливает Slick рендеринг, а затем вы передаете строки. Затем вы снова вызываете glOrtho, но отдадите остальную часть своей игры. glOrtho просто сообщает OpenGL о настройке орфографической проекции и в каком углу экрана начнется рендеринг. Slick использует верхний левый угол, тогда как вы используете нижний левый угол. OpenGL - это машина на основе штата, поэтому вы должны отображать материал Slick, переключаться на новую проекцию, а затем отображать остальную часть своей игры.

Вам также не нужен этот звонок для glDisable(GL_DEPTH_TEST);. По умолчанию тестирование по глубине отключено.

Смежные вопросы