【问题标题】:LWJGL 2D texture mapping offscreenLWJGL 2D 屏幕外纹理映射
【发布时间】:2011-07-22 21:22:46
【问题描述】:

我正在尝试将 2D 图像映射到四边形作为背景图像。图像被绘制在屏幕的中心,所以它最终只覆盖了右上角,其余的都在屏幕外。无论如何我可以翻译或更改 TexCoord 以便从左下角绘制?下面是我正在使用的代码。

        background.bind();          
        GL11.glBegin(GL11.GL_QUADS);
             GL11.glTexCoord2f(1,1);
             GL11.glVertex2i(0,0);
             GL11.glTexCoord2f(1,0);
             GL11.glVertex2i(0,600);
             GL11.glTexCoord2f(0,0);
             GL11.glVertex2i(800,600);
             GL11.glTexCoord2f(0,1);
             GL11.glVertex2i(800,0);
        GL11.glEnd();

【问题讨论】:

  • 这真的是你能想到的最好的问题标题吗?
  • 我希望这会让它更容易理解。

标签: java opengl lwjgl


【解决方案1】:

这与纹理无关;如果你拿走你的纹理,它的渲染效果会和现在完全一样。

OpenGL 不会自然地采用窗口坐标中的顶点。为了让它这样做,您通常需要设置某种形式的正交投影矩阵,通常使用glOrtho。这看起来像:

glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(0, width, 0, height, -1.0, 1.0);

glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();

//Render stuff in window coordinates here.

glPopMatrix();

glMatrixMode(GL_PROJECTION);
glPopMatrix();

矩阵推入和弹出确保保留先前的矩阵。

【讨论】:

  • 感谢您的帮助,我现在按照您上面的建议使用 glOrtho,图像现在适合​​我缩进的屏幕,但是它是水平翻转的,我上面的代码是否有顺序可以更改以修复图像的映射方式?
  • 我更改了顺序,它已经正确翻转,感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-25
  • 2014-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-11
相关资源
最近更新 更多