在OpenGL中渲染纹理1到1 我想做的是用OpenGL和C++在平面上渲染纹理,作为一种显示图像的方法。p>

在OpenGL中渲染纹理1到1 我想做的是用OpenGL和C++在平面上渲染纹理,作为一种显示图像的方法。p>,c++,opengl,textures,render-to-texture,post-processing,C++,Opengl,Textures,Render To Texture,Post Processing,但是,我需要确保在渲染纹理时不会对其进行任何操作,即消除混叠、插值、平滑、模糊等 这是OpenGL处理渲染纹理的默认方式吗?或者需要设置一些标志来禁用任何处理吗?这里说的几乎都是: 只要投影矩阵是与视口像素分辨率相匹配的glOrtho等价物,就不需要将任何内容偏移0.5 您可能会发现一个有趣的相关/类似的问题:如果渲染纹理的像素数与纹理中的像素数完全相同,我认为您只需要将渲染偏移0.5像素,以便渲染到每个像素的中心。如果要放大和缩小纹理,则需要适当地指定GL\u纹理\u最小\u过滤器和GL\u纹

但是,我需要确保在渲染纹理时不会对其进行任何操作,即消除混叠、插值、平滑、模糊等


这是OpenGL处理渲染纹理的默认方式吗?或者需要设置一些标志来禁用任何处理吗?

这里说的几乎都是:

只要投影矩阵是与视口像素分辨率相匹配的
glOrtho
等价物,就不需要将任何内容偏移
0.5


您可能会发现一个有趣的相关/类似的问题:

如果渲染纹理的像素数与纹理中的像素数完全相同,我认为您只需要将渲染偏移0.5像素,以便渲染到每个像素的中心。如果要放大和缩小纹理,则需要适当地指定
GL\u纹理\u最小\u过滤器
GL\u纹理\u MAG\u过滤器
。。。。其中“适当”的意思是
GL\u NEAREST
另一个疯狂的想法:构建一个帧缓冲区对象,精确地将图像附加到要绘制的纹理中,然后使用
glBlitFramebuffer
。为什么不希望对纹理进行最小或最大过滤?您正在渲染2d精灵吗?还是制作一种GUI?如果是这样的话,上述答案/评论应该会对你有所帮助。请确保您确实将最小/最大值过滤器设置为最接近,并将包裹模式设置为其他模式(根据我的经验),即使您不打算使用它们,否则纹理可能不会“完整”,也可能根本无法渲染。谢谢,“GL_纹理最小值过滤器”、“GL_纹理最大值过滤器”和“GL_最接近”是我一直在寻找的东西。关于将渲染偏移0.5像素和包裹模式的建议也应该非常有用。我希望这样做,因为我正在去除图像,不想给人一个错误的印象相机的分辨率通过后处理,以及任何过滤可能会给人一个错误的印象相机的分辨率。