为什么纹理出现在带有帧缓冲区对象的左下角

Why texture appear on Bottom Left with Frame Buffer Object

我正在尝试在 C# 中使用 OpenTK 使用 FBO 渲染到纹理。 当我尝试渲染时,一切都显示出来并且很好,除了纹理显示在左下角,我希望它显示在左上角。

而且Texture在Y轴上出现翻转,所以我需要在绑定Texture Target后修改Texture Matrix。

如果我只是绑定我的纹理并绘制顶点,精灵将出现在左上角。

我使用的代码与 official documentation 完全相同。

我有 2 个问题:
1.我是否通过修改Texture Matrix使目标纹理正确显示?
2、如何让贴图目标出现在左上角?

提前致谢!

我第一次尝试FBO时遇到了类似的问题,所以我的回答是:

  1. 虽然有几种方法可以解决这个颠倒的问题,但修改纹理矩阵一点也不坏。有时在某些情况下修改纹理矩阵可能很方便,例如:,因此您可以将此类功能添加到绑定纹理函数中。

  2. 看来是投影/视口问题,如果您确定正常精灵出现在左上角坐标,请尝试在取消绑定 FBO 句柄之前重新设置您的投影/视图/相机。

实际上原点在左下角,因此 FBO 显示在左下角。 在正常图像中,纹理 space 0,0 位于顶部,因此您看不到它翻转了。 所以你必须添加纹理矩阵才能使 space 相同。

When I try to render, everything show up and just fine except the texture is shown on bottom-left corner,

是的。在 OpenGL 中,2D 图像(视口、纹理、渲染缓冲区)的原点 (0,0) 位于左下方。

I'm expecting it shown on the top left corner.

为什么?原点(就 OpenGL 而言)在左下方。为什么您希望它位于顶部?