我正在製作一個平臺遊戲,我開始用默認的Java函數開發,但現在我切換到OpenGL的一切。我做了所有的事情,就像我總是用OpenGL做的一樣,而且我在其他OpenGL項目中做的很好。現在我的問題是,LWJGL/OpenGL以非常奇怪的方式縮放我的紋理。奇怪的LWJGL/OpenGL縮放紋理
這似乎與我的屏幕的寬高比。 (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:糊狀物死亡,SO永遠。將代碼編輯到問題中。 – genpfault
請在上面的帖子中發佈最小的相關片段。外部鏈接破壞,對於試圖幫助你的人來說更多的工作。 – user1118321
@genpfault在帖子中編輯了最重要的代碼片段。你有什麼想法? – juliand665