【问题标题】:Rendering Texture 1 to 1 in OpenGL在 OpenGL 中渲染纹理 1 到 1
【发布时间】:2015-03-15 03:23:00
【问题描述】:

所以我想做的是使用 OpenGL 和 c++ 将纹理渲染到平面上,作为显示图像的一种方式。

但是我需要确保在渲染纹理时没有对纹理进行任何处理,即。抗锯齿、插值、平滑、模糊等。

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

【问题讨论】:

  • 如果您将纹理渲染为与纹理中完全相同的像素数,我认为您只需将渲染偏移 0.5 个像素,以便渲染到每个像素。如果要放大和缩小纹理,则需要适当地指定 GL_TEXTURE_MIN_FILTERGL_TEXTURE_MAG_FILTER
  • ...其中“适当地”表示GL_NEAREST
  • 另一个疯狂的想法:构建一个帧缓冲区对象,将图像准确附加到要绘制的纹理中,然后使用glBlitFramebuffer
  • 为什么你不想对你的纹理进行最小或放大过滤?你在渲染二维精灵吗?或者制作一种GUI?如果是这样,上述答案/cmets 应该对您有所帮助。确保您确实将 min/mag 过滤器设置为最近,否则(根据我的经验)包装模式,即使您不打算使用它们,否则纹理可能不“完整”并且可能根本无法渲染跨度>
  • 谢谢,“GL_TEXTURE_MIN_FILTER”、“GL_TEXTURE_MAG_FILTER”和“GL_NEAREST”是我正在寻找的东西。关于将渲染偏移 0.5 像素和环绕模式的建议也应该很有帮助。我希望这样做,因为我正在对图像进行去拜耳处理,并且不想通过后期处理给人一种相机分辨率的错误印象,而且任何过滤都可能给人一种相机分辨率的错误印象。

标签: c++ opengl textures render-to-texture post-processing


【解决方案1】:

这里说的几乎都是:http://www.mindcontrol.org/~hplus/graphics/opengl-pixel-perfect.html

只要投影矩阵是与视口像素分辨率匹配的glOrtho 等效矩阵,就无需将任何东西偏移0.5

您可能会发现有趣的相关/类似问题:Opengl pixel perfect 2D drawing

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 2012-06-03
    • 2014-07-22
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 2012-01-16
    相关资源
    最近更新 更多