Opengl 纹理未按预期进行包裹

Opengl 纹理未按预期进行包裹,opengl,Opengl,我正在生成一个位图(每像素1字节),并尝试将其用于alpha混合。我成功地使用了位图,但纹理似乎没有像我预期的那样包裹线条 std::ofstream file{ R"(FileName.txt)" }; file << "width: " << gs.width() << "\theight: " << gs.height() << "\n"; for (int i = 0; i < gs.height(); ++i) {

我正在生成一个位图(每像素1字节),并尝试将其用于alpha混合。我成功地使用了位图,但纹理似乎没有像我预期的那样包裹线条

std::ofstream file{ R"(FileName.txt)" };

file << "width: " << gs.width() << "\theight: " << gs.height() << "\n";

for (int i = 0; i < gs.height(); ++i)
{
    for (int j = 0; j < gs.width(); ++j)
    {
        file << ((gs.alpha()[j + i * gs.width()]) ? 'X' : ' ');
    }
    file << "\n";
}
当我使用下面的代码时,在给定输入图像的情况下,它将包装到我期望的位置。我得到了我期望的一组X

std::ofstream file{ R"(FileName.txt)" };

file << "width: " << gs.width() << "\theight: " << gs.height() << "\n";

for (int i = 0; i < gs.height(); ++i)
{
    for (int j = 0; j < gs.width(); ++j)
    {
        file << ((gs.alpha()[j + i * gs.width()]) ? 'X' : ' ');
    }
    file << "\n";
}

有人能告诉我我做错了什么吗?

说得清楚一点,纹理应该是那样倾斜的吗?在我看来,这非常像读/写不正确对齐的位图图像的结果;它们要求每条扫描线从4字节边界开始。对于您建议的1字节图像,这意味着如果每行的像素数不是4的倍数,则需要进行一些填充以满足对齐。为什么要对alpha遮罩使用深度纹理
GL_RED
更合理,如果使用颜色格式,实际上有一种单通道内部格式,可以仅使用8位(
GL_R8
)来表示;深度纹理的最小内部格式是每个组件16位。对齐是问题所在。我最终将(un)包对齐方式更改为1,所有操作都正常。@Graznarak请将ut作为答案。可能对其他人有用。@MichaelIV我如何将注释标记为答案?