首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在OpenGL 4.x中创建和读取一维纹理

在OpenGL 4.x中创建和读取一维纹理
EN

Stack Overflow用户
提问于 2014-08-28 13:42:58
回答 1查看 509关注 0票数 0

我在OpenGL 4.x中使用一维纹理有问题。

我以这种方式创建了我的一维纹理(BTW:我删除了错误检查以使代码更清晰、更短-通常是在每次调用BLUE_ASSERTEx(glGetError() == GL_NO_ERROR, "glGetError failed.");之后):

代码语言:javascript
复制
glGenTextures(1, &textureId_);

// bind texture
glBindTexture(GL_TEXTURE_1D, textureId_);

// tells OpenGL how the data that is going to be uploaded is aligned
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

BLUE_ASSERTEx(description.data, "Invalid data provided");

    glTexImage1D(
        GL_TEXTURE_1D,      // Specifies the target texture. Must be GL_TEXTURE_1D or GL_PROXY_TEXTURE_1D.
        0,                  // Specifies the level-of-detail number. Level 0 is the base image level. Level n is the nth mipmap reduction image.
        GL_RGBA32F,
        description.width,  
        0,                  // border: This value must be 0.
        GL_RGBA, 
        GL_FLOAT,
        description.data);
    BLUE_ASSERTEx(glGetError() == GL_NO_ERROR, "glGetError failed.");

// texture sampling/filtering operation.
glTexParameteri(GL_TEXTURE_1D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri (GL_TEXTURE_1D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri (GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri (GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

glBindTexture(GL_TEXTURE_1D, 0);

创建之后,我尝试以这样的方式读取创建的纹理的像素数据: const宽度= width_;const高度= 1;

代码语言:javascript
复制
// Allocate memory for depth buffer screenshot
float* pixels = new float[width*height*sizeof(buw::vector4f)];

// bind texture
glBindTexture(GL_TEXTURE_1D, textureId_);
glPixelStorei(GL_PACK_ALIGNMENT, 1);
glReadPixels(0, 0, width, height, GL_RGBA, GL_FLOAT, pixels);
glBindTexture(GL_TEXTURE_1D, 0);

buw::Image_4f::Ptr img(new buw::Image_4f(width, height, pixels));

buw::storeImageAsFile(filename.toCString(), img.get());

delete pixels;

但是返回的像素数据与输入像素数据不同(输入:彩色斜坡,ouptut:黑色图像)

有什么办法解决这个问题吗?也许我使用了错误的API调用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-28 13:59:19

glReadPixels替换glGetTexImage确实解决了这个问题。

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

https://stackoverflow.com/questions/25550354

复制
相关文章

相似问题

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