0

生のテクスチャ データから devIL イメージを作成したいのですが、それを行う方法が見つからないようです。適切な方法はIL_RAWを使用したilLoadLのようですが、うまくいきません。ここのドキュメントには、データには 13 バイトのヘッダーが必要であると書かれているので、そこに意味のないデータを入れただけです。ilLoadL の size パラメータに 0 を指定すると、どうしてもテクスチャが黒くなります。そうしないと、私のプログラムは何も描画することを拒否します。ilIsImage は true を返し、そこから openGL テクスチャを問題なく作成できます。ファイルからテクスチャをロードすると、コードが機能します。

それほど多くはありませんが、これまでの私のコードは次のとおりです。

    //Loading:
    ilInit();
    iluInit();

    ILuint ilID;


    ilGenImages(1, &ilID);

    ilBindImage(ilID);

    ilEnable(IL_ORIGIN_SET);
    ilOriginFunc(IL_ORIGIN_LOWER_LEFT);


        //Generate 13-byte header and fill it with meaningless numbers
        for (int i = 0; i < 13; ++i){

            data.insert(data.begin() + i, i);
        }


    //This fails.
    if (!ilLoadL(IL_RAW, &data[0], size)){
        std::cout << "Fail" << std::endl;
    }

テクスチャの作成:

        ilBindImage(ilId[i]);

        ilConvertImage(IL_RGBA, IL_UNSIGNED_BYTE);

        glBindTexture(textureTarget, id[i]);

        glTexParameteri(textureTarget, GL_TEXTURE_WRAP_S, GL_REPEAT);
        glTexParameteri(textureTarget, GL_TEXTURE_WRAP_S, GL_REPEAT);

        glTexParameterf(textureTarget, GL_TEXTURE_MIN_FILTER, filters[i]);
        glTexParameterf(textureTarget, GL_TEXTURE_MAG_FILTER, filters[i]);

        glTexImage2D(textureTarget, 0, GL_RGBA,
            ilGetInteger(IL_IMAGE_WIDTH), ilGetInteger(IL_IMAGE_HEIGHT),
            0, GL_RGBA, GL_UNSIGNED_BYTE, ilGetData());
4

1 に答える 1