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

时间:2013-07-02 16:22:33

标签: 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);

使用此纹理渲染三角形时,必须指定纹理坐标。但是,哪个坐标映射到哪个颜色?

例如,pixels[0]pixels[15]pixels[240]pixels[255]执行glTexCoord2f(0,0)映射到哪个?那么glTexCoord2f(1,0)呢?

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

1 个答案:

答案 0 :(得分:1)

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

(0,1) ... (1,1)
  :         :
(0,0) ... (1,0)

纹理数据本身是在组件之后,逐像素,逐行,从左下到右上的布局组件。因此在你的情况下像这样:

[240] -> [255]
  :        :
 [0]  -> [15]

因此,作为结论,您将获得此映射(忽略任何过滤和钳位问题):

(0,0) -> pixels[0]
(1,0) -> pixels[15]
(0,1) -> pixels[240]
(1,1) -> pixels[255]