Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 尺寸不为2^x的openGL纹理_C++_Opengl_Ldf - Fatal编程技术网

C++ 尺寸不为2^x的openGL纹理

C++ 尺寸不为2^x的openGL纹理,c++,opengl,ldf,C++,Opengl,Ldf,我正在尝试在openGL环境中显示图片。图片的原始尺寸是3648x2432,我想用256x384图像显示它。问题是,384不是2的幂,当我试图显示它时,它看起来被拉伸了。我如何修复它?您可以调整纹理大小,使其为二次方(扭曲纹理,使其在映射到对象时看起来正确)。我知道有三种方法可以做到这一点- Albert建议的那个(调整大小,直到合适为止) 将纹理细分为2**n大小的矩形,并以某种方式将它们拼接在一起 查看是否可以使用GL\u ARB\u texture\u non\u power\u of

我正在尝试在openGL环境中显示图片。图片的原始尺寸是3648x2432,我想用256x384图像显示它。问题是,384不是2的幂,当我试图显示它时,它看起来被拉伸了。我如何修复它?

您可以调整纹理大小,使其为二次方(扭曲纹理,使其在映射到对象时看起来正确)。

我知道有三种方法可以做到这一点-

  • Albert建议的那个(调整大小,直到合适为止)
  • 将纹理细分为2**n大小的矩形,并以某种方式将它们拼接在一起
  • 查看是否可以使用
    GL\u ARB\u texture\u non\u power\u of two
    。不过,最好避免使用它,因为它看起来像是Xorg特定的扩展

    • ARB\u纹理\u矩形
      可能就是您要找的。它允许您绑定到
      GL\u纹理\u矩形\u ARB
      ,而不是
      GL\u纹理\u 2D
      ,并且您可以加载具有非2次方尺寸的图像。请注意,纹理坐标的范围是[0..w]x[0..h],而不是[0..1]x[0..1]。

      如果GL_EXT_texture_rectangle为真,则使用GL_texture_rectangle_EXT作为glEnable()和GLBindTexture()中的第一个参数调用。

      我的印象是纹理总是二的幂,因为硬件无论如何都会使用相同数量的资源。但我可能是错的。选项2很好——防止失真