首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QOpenGLFunctions和QOpenGLFunctions_4_3_Core中的最大层数

QOpenGLFunctions和QOpenGLFunctions_4_3_Core中的最大层数
EN

Stack Overflow用户
提问于 2020-05-22 23:23:21
回答 1查看 32关注 0票数 0

在我的程序中,如果使用QOpenGLTexture,我可以像这样设置256层纹理:

代码语言:javascript
复制
    texture= new QOpenGLTexture(QOpenGLTexture::Target2DArray);
    texture->create();
    texture->setSize(24,24);
    texture->setLayers(256);
    texture->setFormat(QOpenGLTexture::RGB8_UNorm);
    texture->allocateStorage();

并为每一层设置数据(mem_texture为空*其中存储纹理数据):

代码语言:javascript
复制
for(int i=0;i<256;i++)
    {
        texture->setData(0,i,QOpenGLTexture::RGBA,QOpenGLTexture::UInt8,((const char*)((uint)mem_texture+offset)));
        offset+=0x900;
    }

如果我像这样使用原始接口,结果是good.But:

代码语言:javascript
复制
    GLuint colorPattern;
    glGenTextures(1, &colorPattern);
    glBindTexture(GL_TEXTURE_2D_ARRAY, colorPattern);
    glTexStorage3D(GL_TEXTURE_2D_ARRAY, 1, GL_RGB8, 24, 24,256);
    glTexSubImage3D(GL_TEXTURE_2D_ARRAY,0,0,0,0,24,24,256,GL_RGBA,GL_UNSIGNED_BYTE,mem_texture);
    free(mem_texture);

我发现我只能在most.What中使用128层纹理,这两种方法有什么不同?如何使用原OpenGL接口设置256层纹理?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-23 12:04:28

当设置纹理线的z值时,我使用GL_BYTE,实际上我应该使用GL_UNSIGNED_BYTE。

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

https://stackoverflow.com/questions/61958353

复制
相关文章

相似问题

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