Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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
OpenGL纹理数据的方向是什么?_Opengl_Textures - Fatal编程技术网

OpenGL纹理数据的方向是什么?

OpenGL纹理数据的方向是什么?,opengl,textures,Opengl,Textures,考虑下面的代码,它创建了一个32位16x16纹理,它不会重复: int pixels[256]; glTexImage2D(GL_TEXTURE_2D, 0, 4, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP)

考虑下面的代码,它创建了一个32位16x16纹理,它不会重复:

int pixels[256];
glTexImage2D(GL_TEXTURE_2D, 0, 4, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
使用此纹理渲染三角形时,必须指定纹理坐标。但是,哪个坐标映射到哪个颜色

例如,
glTexCoord2f(0,0)
映射到
像素[0]、
像素[15]
像素[240]
像素[255]
中的哪一个?那么
glTexCoord2f(1,0)

编辑:纹理矩阵(实际上)假定为单位矩阵。

默认情况下(使用单位纹理矩阵),纹理坐标从纹理空间的左下角开始,延伸到右上角,因此它们的布局如下:

(0,1) ... (1,1)
  :         :
(0,0) ... (1,0)
[240] -> [255]
  :        :
 [0]  -> [15]
纹理数据本身是从左下角到右上角逐成分、逐像素、逐行排列的。因此,在你这样的情况下:

(0,1) ... (1,1)
  :         :
(0,0) ... (1,0)
[240] -> [255]
  :        :
 [0]  -> [15]
因此,作为一个结论,您得到了这个映射(忽略任何过滤和钳制问题):


咬紧牙关,升级到GL 1.2,并使用
GL\u-CLAMP\u-to\u-EDGE