我正在尝试使用FBO在C#中使用OpenTK渲染到纹理。 当我尝试渲染时,一切都显示出来并且很好,除了纹理显示在左下角,我希望它显示在左上角。
纹理也会在Y轴上翻转,所以我需要在绑定纹理目标后修改纹理矩阵。
如果我只是绑定纹理并绘制顶点,则精灵将出现在左上角。
我使用的代码与official documentation完全相同。
我有两个问题:
1.我是否正确通过修改纹理矩阵使目标纹理正确显示?
2.如何使纹理目标出现在左上角?
提前致谢!
答案 0 :(得分:0)
实际上Origin位于左下角,因此FBO显示在左下角。 在普通图像中,纹理空间0,0位于顶部,因此您看不到它被翻转。 因此,您必须添加纹理矩阵以使空间相同。
答案 1 :(得分:0)
当我尝试渲染时,除了纹理显示在左下角之外,一切都显示出来并且很好,
是。在OpenGL中,2D图像的原点(0,0)(视口,纹理,渲染缓冲区)位于左下方。
我希望它显示在左上角。
为什么呢?原点(就OpenGL而言)位于左下角。为什么你期望它在顶部?
答案 2 :(得分:-1)
第一次尝试FBO时遇到了类似的问题,所以我的回答是:
虽然有几种方法可以解决这个颠倒问题,但修改纹理矩阵根本不是一个坏主意。有时修改纹理矩阵在某些情况下可能很方便,例如:Use non normalized texture coordinate,所以你可以在绑定纹理函数中添加这些特性。
它似乎是投影/视口问题,如果您确定普通精灵出现在左上角坐标上,请在取消绑定FBO手柄之前尝试重新设置投影/视图/摄影机。 / p>