gpt4 book ai didi

无法在 glTexSubImage2D 中指定大小

转载 作者:行者123 更新时间:2023-11-30 15:28:33 26 4
gpt4 key购买 nike

我正在尝试在已应用于 2D 四边形的纹理上创建子纹理。当传递默认参数(宽度和高度)时它工作正常,但当我输入整数大小(例如宽度为 100,高度为 100)时,输出不正确。扫描线显示在所需区域中。这是代码

unsigned char* grass_image = SOIL_load_image("grass1.jpg", &width, &height, 0, SOIL_LOAD_RGB);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB,GL_UNSIGNED_BYTE, grass_image);

SOIL_free_image_data(grass_image);

unsigned char* temple_image = SOIL_load_image("temple.jpg", &width, &height, 0, SOIL_LOAD_RGB);

glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height,
GL_RGB,GL_UNSIGNED_BYTE, temple_image); // NO ERROR

glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 100, 100,
GL_RGB,GL_UNSIGNED_BYTE, temple_image); // ERROR

SOIL_free_image_data(temple_image);

最佳答案

问题是你需要设置步幅,现在子图像中的第二行像素将是原始图像中第一行像素的101-200像素。

您需要使用 glPixelStorei(GL_UNPACK_ROW_LENGTH, stride); 设置步幅,如下所示:

unsigned char* temple_image = SOIL_load_image("temple.jpg", &width, &height, 0, SOIL_LOAD_RGB);
glPixelStorei(GL_UNPACK_ROW_LENGTH, width);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 100, 100,
GL_RGB,GL_UNSIGNED_BYTE, temple_image);

关于无法在 glTexSubImage2D 中指定大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26548579/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com