首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GL_LUMINANCE调用glTexImage2D时的Texel数据

GL_LUMINANCE调用glTexImage2D时的Texel数据
EN

Stack Overflow用户
提问于 2017-11-15 16:25:58
回答 2查看 166关注 0票数 1

通常,texel是一个RGBA值。在以下代码中,texel表示哪些数据:

代码语言:javascript
复制
const int TEXELS_W = 2, TEXELS_H = 2;
GLubyte texels[] = {
    100, 200,  0,  0,
    200,  250,  0,  0
};
glBindTexture(GL_TEXTURE_2D, textureId);
glTexImage2D(
    GL_TEXTURE_2D,
    0,                  // mipmap reduction level
    GL_LUMINANCE,
    TEXELS_W,
    TEXELS_H,
    0,                  // border (must be 0)
    GL_LUMINANCE,
    GL_UNSIGNED_BYTE,
    texels);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-15 16:45:05

代码语言:javascript
复制
GLubyte texels[] = {
    100, 200,  0,  0,
    200,  250,  0,  0
};

OpenGL将只读取其中的4个值。因为GL_UNPACK_ALIGNMENT默认为4,所以OpenGL期望每一行像素数据对齐为4个字节。因此,每行中的两个0只是填充,因为编写这段代码的人不知道如何更改对齐方式。

因此,OpenGL将100, 200作为第一行读取,然后跳到下一个4字节边界,并将200, 250作为第二行读取。

票数 4
EN

Stack Overflow用户

发布于 2017-11-15 16:37:24

GL_LUMINANCE: 每个元素都是一个单一亮度值。 GL将其转换为浮点,然后通过复制红色、绿色和蓝色的亮度值三次并为alpha附加1,将其组装为RGBA元素。然后,每个组件乘以有符号缩放因子GL_c_SCALE,添加到有符号偏置GL_c_BIAS中,然后夹紧到范围0,1

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47312524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档