Как мне заставить Nifty GUI использовать мою систему координат?
По разным причинам мне нравится использовать openGL, чтобы использовать координаты, отличные от пикселей, которые легко устанавливаются через:
Display.setDisplayMode(new DisplayMode(800, 600));
GLU.gluOrtho2D(0f,32f,0f,24f);
Однако теперь, когда я начал пытаться интегрировать графический интерфейс Nifty в свое приложение, эта шкала коррдинатов вызывает проблемы. А именно, Nifty, кажется, думает, что openGL использует пиксели как единицы, и, таким образом, делает все гигантским. Есть ли способ исправить это?
2 ответа
Почему бы просто не делать вещи так, как хочет NiftyGUI (координаты пикселей), а только во время визуализации NiftyGUI. Это означает:
gl.glMatrixMode(gl.GL_PROJECTION_MATRIX);
GLU.gluOrtho2D(0f,32f,0f,24f);
//Render my stuff
gl.glMatrixMode(gl.GL_PROJECTION_MATRIX);
gl.glLoadIdentity();
GLU.gluOrtho2D(0f,width,0f,height);
//Render with NiftyGUI.
Вы совершили классическую ошибку новичка в OpenGL: одноразовая настройка состояния.
OpenGL не инициализирован. Вы переустанавливаете каждое состояние по мере необходимости и по мере необходимости. Делайте в вашем случае это полностью для того, чтобы установить матрицу проекции на пиксельное отображение, ортопроекцию, когда это необходимо, и на что-то другое при использовании Nifty.