Я создаю платформер, который я начал разрабатывать с помощью java-функций по умолчанию, но теперь я перехожу на OpenGL для всего. Я сделал все, как всегда, с OpenGL, и то, что я делал, отлично работает в других моих проектах OpenGL. Теперь моя проблема в том, что LWJGL/OpenGL очень сильно масштабирует мои текстуры.LWJGL/OpenGL масштабирование текстур weirdly
Это, кажется, связано с соотношением сторон моего экрана. (8: 5)
Мне уже пришлось перевернуть экран, чтобы сделать его правильным, но, как вы видите, текст работает нормально, это просто текстурированный прямоугольник, и он даже не на прямой дно.
Вот наиболее важные фрагменты из двух классов, которые фактически используют OpenGL: Metamorph.java (основной класс)
public static void initGL()
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, Display.getWidth(), 0, Display.getHeight(), 1, -1);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glMatrixMode(GL_MODELVIEW);
glClearColor(0, 0, 0, 1);
glDisable(GL_DEPTH_TEST);
}
public void render()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glScalef(1.0f, -1.0f, 1.0f);
glTranslatef(0f, -720f, 0f);
//glScalef(1280f/800, 720f/500, 1f);
renderer.render();
Display.update();
Display.sync(60);
}
Renderer.java (рендеринг материал)
private void renderMainMenuWithGL()
{
//System.out.println("Main Menu!");
glColor4f(1, 1, 1, 1);
try
{
Texture bg = loadTexture("mockery");
bg.bind();
} catch (Exception e)
{
e.printStackTrace();
}
//drawQuad(0, 0, 1280, 720, 0, 0, 1280, 720);
glPushMatrix();
{
glBegin(GL_QUADS);
glTexCoord2f(0, 0);glVertex2f(0, 0);
glTexCoord2f(0, 1);glVertex2f(0, 720);
glTexCoord2f(1, 1);glVertex2f(1280, 720);
glTexCoord2f(1, 0);glVertex2f(1280, 0);
glEnd();
}
glPopMatrix();
TrueTypeFont f = loadFont(MAINFONT, Font.PLAIN, 50);
TrueTypeFont fb = loadFont(MAINFONT, Font.PLAIN, 48);
int sel = -1;
if(Mouse.getX() > 1000 && Mouse.getX() < 1240 && Mouse.getY() > 282.5F && Mouse.getY()< 737.5F)
sel = Math.round((Mouse.getY() - 337.5F)/75F);
if(sel == 0)
drawStringRight(fb, 1240, 350, "Story", new Color(0xff516b6b));
else
drawStringRight(f, 1240, 350, "Story", new Color(0xff516b6b));
}
private void drawStringRight(TrueTypeFont f, int x, int y, String s, Color c)
{
glPushMatrix();
f.drawString(x-f.getWidth(s), y, s, c);
glPopMatrix();
}
Я нахожусь также открыта для совета по файловой структуре/что я сделал неправильно в другом месте, но имейте в виду, что это сильно WIP
-1: Pastebins die, SO is forever. Измените код в вопросе. – genpfault
Пожалуйста, разместите самый маленький соответствующий фрагмент в своем сообщении выше. Наружные ссылки ломаются и больше работают для людей, которые пытаются вам помочь. – user1118321
@genpfault Отредактировано наиболее важные фрагменты в сообщении. У тебя есть идеи? – juliand665