-2

6 つのファイルを使用することを除けば、スカイボックスは既に動作するようになっています。6 つではなく 1 つのファイルを使用する方法を知りたいです。私はインターネット全体を見てきましたが、うまくいくものを見つけることができません。以下は、画像を cubemap に入れる loadCubeMap 関数です。

public int loadCubeMap(String[] textureFiles){
    int texID = GL11.glGenTextures();
    GL13.glActiveTexture(GL13.GL_TEXTURE0);
    GL11.glBindTexture(GL13.GL_TEXTURE_CUBE_MAP, texID);

    for(int i=0;i<textureFiles.length;i++){
        TextureData data = decodeTextureFile("res/" + textureFiles[i] + ".png");
        GL11.glTexImage2D(GL13.GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL11.GL_RGBA, data.getWidth(), data.getHeight(), 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, data.getBuffer());
    }
    GL11.glTexParameteri(GL13.GL_TEXTURE_CUBE_MAP, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);
    GL11.glTexParameteri(GL13.GL_TEXTURE_CUBE_MAP, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR);
    textures.add(texID);
    return texID;
}
4

1 に答える 1

2

スカイボックスの 6 つの側面を任意の方法で 1 つのテクスチャに組み合わせることができます。スカイボックスの各面のテクスチャ座標を画像の対応するセクションに設定するだけです。スカイボックス画像TopBottomLeftRightFrontBackをすべて一列に作成する場合(アスペクト比6:1)、上面を次のように設定するだけです

{0.0,0.0} {0.1666,0.0} {0.1666,1.0} {0.0,1.0}

そしてあなたの下面として

{0.1666,0.0} {0.3332,0.0} {0.3332,1.0} {0.1666,1.0}

他の面についても同様です。

于 2015-03-31T17:43:39.333 に答える