我已经让天空盒工作了,除了它需要六个文件。我想知道如何使用1个文件而不是6个文件。我在互联网上看了一遍,找不到任何有用的东西。以下是将图像放入立方体贴图的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;
}
答案 0 :(得分:0)
您可以根据需要将天空盒的6个边组合成单个纹理。您需要做的就是将天空盒每侧的纹理坐标设置为图像的相应部分。如果你使天空盒图像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}
等其他面孔。