gpt4 book ai didi

java - 使用 Ortho2D 在 OpenGL 中映射四边形的问题纹理

转载 作者:行者123 更新时间:2023-12-04 06:26:54 25 4
gpt4 key购买 nike

以下代码生成以下图像。我用于背景的图像是 640 x 480,displayMode 也是如此。纹理背景是 .bmp 文件,并使用 Slick 纹理加载器加载。我很困惑为什么它没有填充四边形以及为什么它会被反射。
编辑:我的 OpenGL 场景的背景是粉红色,你看到的黑色来自创建的 Quad。背景图像是带有 2px 浅蓝色边框的绿色块,上面贴有“测试”。

private void renderBackground(){
float w = displayMode.getHeight()/2;
float h = displayMode.getWidth()/2;

GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glPushMatrix();

GL11.glLoadIdentity();
GLU.gluOrtho2D(-w, w, -h, h);

GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glPushMatrix();

GL11.glLoadIdentity();
GL11.glDisable(GL11.GL_DEPTH_TEST);

if(useTextures)background.bind();
GL11.glBegin(GL11.GL_QUADS);

GL11.glTexCoord2f(0.0f, 0.0f);
GL11.glVertex2f(-w,-h);

GL11.glTexCoord2f(1.0f, 0.0f);
GL11.glVertex2f(w,-h);

GL11.glTexCoord2f(1.0f, 1.0f);
GL11.glVertex2f(w, h);

GL11.glTexCoord2f(0.0f, 1.0f);
GL11.glVertex2f(-w, h);

GL11.glEnd();

GL11.glEnable(GL11.GL_DEPTH_TEST);
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glPopMatrix();
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glPopMatrix();
}

OpenGL Texture mismapping

现在当我添加 GL11.glTranslatef(20.0f, 20.0f, 0.0f);您会注意到出现了粉红色,这是在我的“initGL”方法中创建的颜色:
GL11.glClearColor(1.0f, 0.75f, 0.796f, 0.0f);
enter image description here

我的 GL_PROJECTION 在推送之前包含以下内容,当调用 renderBackground() 时,我的 GL_MODELVIEW 未修改。
    GL11.glMatrixMode(GL11.GL_PROJECTION); // Select The Projection Matrix
GL11.glLoadIdentity(); // Reset The Projection Matrix

// Calculate The Aspect Ratio Of The Window
GLU.gluPerspective(45.0f, (float) displayMode.getWidth() / (float) displayMode.getHeight(), 0.1f, 25.0f);
//position camera
GLU.gluLookAt(5.0f, 3.0f, -5.0f, 0.0f, 0.0f, -10.0f, 0.0f, 1.0f, 0.0f);
GL11.glMatrixMode(GL11.GL_MODELVIEW); // Select The Modelview Matrix

最佳答案

我需要更多信息来确定问题,但这里列出了一些可能性。

1)您使用的是较旧的显卡,它不支持纹理非 2 的幂,因为您使用的是库来加载纹理,也许它正在检测它,创建一个 2 的幂的图像,并用黑色填充它.

2)您(或您正在使用的某个库)更改了纹理矩阵堆栈的矩阵,并且它正在更改纹理坐标。

3)加载纹理(或调用库来执行此操作)时您做错了什么。

我要检查的第一件事是您的显卡是否支持纹理非幂的 2 扩展。你可以在运行时检查它,见 how to detect if openGL/card supports non power of 2?

关于java - 使用 Ortho2D 在 OpenGL 中映射四边形的问题纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5944373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com