小编Dja*_*ngo的帖子

在openGL中.如何将纹理的一部分复制到另一个纹理

我正在尝试创建一个空白(白色没有alpha)纹理,我可以加载其他纹理并写入其中的一部分.我试着只需要获得纹理的一部分,并使用glTexSubImage2D将它放在那里它似乎不能正常工作.任何人都知道如何做到这一点?我究竟做错了什么?

int sourceTextWidth;
int sourceTextHeight;
int sourceFormat;
int formatOffset = 0;

//bind the texture
glBindTexture( GL_TEXTURE_2D, textureID );

//get its params
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_COMPONENTS, &sourceFormat);
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &sourceTextWidth);
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &sourceTextHeight);
switch (sourceFormat)
{
    case GL_RGB:
    {
        formatOffset = 3;
    }
    break;
    case GL_RGBA:
    {
        formatOffset = 4;
    }
    break;
}
if (formatOffset == 0)
{
    return false;
}


unsigned char * sourceData = (unsigned char *)malloc(sourceTextWidth * sourceTextHeight * formatOffset);

glGetTexImage(GL_TEXTURE_2D, 0, GL_RGB, GL_UNSIGNED_BYTE, sourceData);

glBindTexture( GL_TEXTURE_2D, …
Run Code Online (Sandbox Code Playgroud)

c++ opengl textures

4
推荐指数
1
解决办法
4838
查看次数

标签 统计

c++ ×1

opengl ×1

textures ×1