![](/img/trans.png)
[英]Can't draw to FrameBufferObject, then draw to frameBuffer, in LWJGL
[英]Can't draw 1280x800 texture in LWJGL
我的圖片是1280x800,屏幕尺寸是1280x800。 它應該完美繪制。 但是現在它在屏幕的左上角繪制了一個方形的紋理,該紋理不合比例且不夠大。 我不知道為什么它不起作用,我嘗試在繪制時將紋理的大小寫得更大,並且似乎可以排序,但是我不知道為什么在1280x800的四邊形上繪制時它不起作用。
這是我的OPENGL並顯示設置代碼:
try {
DisplayMode displayMode = null;
DisplayMode[] modes = Display.getAvailableDisplayModes();
for (int i = 0; i < modes.length; i++) {
if (modes[i].getWidth() == World.SCREEN_WIDTH && modes[i].getHeight() == World.SCREEN_HEIGHT && modes[i].isFullscreenCapable()) {
displayMode = modes[i];
}
}
Display.setDisplayMode(displayMode);
Display.setFullscreen(false);
Display.create();
} catch (LWJGLException e) {
e.printStackTrace();
}
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, World.SCREEN_WIDTH, World.SCREEN_HEIGHT, 0, 1, -1);
glMatrixMode(GL_MODELVIEW);
glEnable(GL_TEXTURE_2D);
這是我繪制紋理的代碼:
background = TextureLoader.getTexture("PNG", new FileInputStream(new File("res/menu/background.png")));
girl_01 = TextureLoader.getTexture("PNG", new FileInputStream(new File("res/menu/girl_01.png")));
girl_02 = TextureLoader.getTexture("PNG", new FileInputStream(new File("res/menu/girl_02.png")));
glBindTexture(GL_TEXTURE_2D, background.getTextureID());
glPushMatrix();
glBegin(GL_QUADS);
glTexCoord2f(0, 0);
glVertex2f(0, 0); // Upper left
glTexCoord2f(1, 0);
glVertex2f(World.SCREEN_WIDTH, 0); // Upper right
glTexCoord2f(1, 1);
glVertex2f(World.SCREEN_WIDTH, World.SCREEN_HEIGHT); // Lower right
glTexCoord2f(0, 1);
glVertex2f(0, World.SCREEN_HEIGHT); // Lower left
glEnd();
glPopMatrix();
編輯:搜索了幾個小時后,我發現,我認為這是一個怪異的解決方案,我將圖像制作為2048x1024,並留出了多余的空白。 有效。 但是這應該如何工作? 因此,我想使所有圖像大小的冪為2,而使多余的空間為空白? 或者,還有更好的方法?
這里確實沒有足夠的信息,但是我懷疑您有一個非常老的OpenGL實現(2.0之前的版本)。
較早版本的OpenGL無法使用非二次冪紋理。 您必須在加載之前重新縮放(拉伸以適合)圖像,或者在調整大小和修改紋理坐標后將圖像的一部分留為空白。
如果您具有合法的OpenGL 2.0實現,它將支持非二次冪紋理。 早在OpenGL 2.0時代,驅動程序供應商並不十分符合要求 ,並且通常會聲稱無論主機硬件是否真正滿足所有要求都實現了OpenGL版本。 非二次冪紋理可能是最大的違規問題,該時代的許多硬件都可以處理OpenGL 2.0所需的一切,除了NPOT紋理。
無論如何,如果您使用的平台不能保證OpenGL 2.0,則應在使用npot紋理之前檢查擴展名GL_ARB_texture_non_power_of_two
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.