所以我正在制作一个可以使用directx10,11和opengl的引擎。
到目前为止,一切运作良好。它可以正确渲染opengl和directx中的图像,两者看起来都一样。
现在我添加了rendertargets。在DirectX中它运行良好,到目前为止没有问题。但是使用OpenGL,我之前绘制的纹理是颠倒的,位于rendertarget的右下角。
你们知道问题是什么吗?为什么没有正确的rendertar才能正常工作?
如果需要,我可以发送一些代码。我只需要先排序。
答案 0 :(得分:3)
OpenGL放置纹理的默认原点,从而在左下方显示目标。 DirectX位于左上方。如果您对像素布局做出相同的假设,则看起来图像被翻转。您可以通过在投影矩阵y轴上应用-1比例来补偿这一点。
OpenGL图像看起来是拉伸的可能是由于在渲染到FBO时设置了错误的视口。在渲染到FBO时,确保使用glViewport设置的视口与渲染目标中的尺寸和目标区域匹配。
答案 1 :(得分:1)
正确设置glviewport,这导致rendertarget只是颠倒但位于正确的位置。现在我只是将顶点着色器中的UV.y更改为-UV.y并将其固定。