Мой антенгин onloadresources () не кажется эффективным

StackOverflow https://stackoverflow.com/questions/8333966

Вопрос

Я использую AndEngine, чтобы создать живые обои. Однако в моем методе OnloadResources () я в настоящее время загружаю 3 разных текстур:

@Override
public void onLoadResources() {
    prefs = PhysicsWallpaperActivity.this.getSharedPreferences(SHARED_PREFS_NAME, 0);
    prefs.registerOnSharedPreferenceChangeListener(this);
    this.mAutoParallaxBackgroundTexture = new BitmapTextureAtlas(2048, 2048, TextureOptions.DEFAULT);
    this.mAutoParallaxImage1Texture = new BitmapTextureAtlas(2048, 2048, TextureOptions.DEFAULT);
    this.mAutoParallaxImage2Texture = new BitmapTextureAtlas(2048, 2048, TextureOptions.DEFAULT);

    BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
    this.mParallaxLayerBackground = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mAutoParallaxBackgroundTexture, this, "background.jpg", 0, 0);
    this.mParallaxLayerImage1 = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mAutoParallaxImage1Texture, this, "image1.jpg", 0, 0);
    this.mParallaxLayerImage2 = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mAutoParallaxImage2Texture, this, "image2.png", 0, 800);

    this.mEngine.getTextureManager().loadTexture(this.mAutoParallaxBackgroundTexture);  
    this.mEngine.getTextureManager().loadTexture(this.mAutoParallaxImage1Texture);               
    this.mEngine.getTextureManager().loadTexture(this.mAutoParallaxImag2Texture);               

}

Я чувствую, что это не самый эффективный способ сделать это. Но если у меня есть все мои изображения BitmaptextureatlastexTureRegionFactorys ', указывающие на один растровый текстовый театр, и эти «изображения» находятся на одних и тех же координатах, изображения будут загружаться друг на друга, даже если я вызовут только 1 из них.

Пример проблемы здесь:

    @Override
 public void onLoadResources() {
    prefs = PhysicsWallpaperActivity.this.getSharedPreferences(SHARED_PREFS_NAME, 0);
    prefs.registerOnSharedPreferenceChangeListener(this);
    this.mAutoParallaxBackgroundTexture = new BitmapTextureAtlas(2048, 2048, TextureOptions.DEFAULT);

    BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
    this.mParallaxLayerBackground = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mAutoParallaxBackgroundTexture, this, "background.jpg", 0, 0);
    this.mParallaxLayerImage1 = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mAutoParallaxBackgroundTexture, this, "image1.jpg", 0, 0;
    this.mParallaxLayerImage2 = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mAutoParallaxBackgroundTexture, this, "image2.png", 0, 800);

    this.mEngine.getTextureManager().loadTexture(this.mAutoParallaxBackgroundTexture);               

}

^ Я бы хотел использовать такой код, потому что он кажется более эффективным, но «Image1» и «Image2» автоматически загружаются друг на друга, даже если я называю только 1 из них.

Я делаю это правильно? Или есть более эффективный способ?

Это было полезно?

Решение

Ваши текстуры могут содержать более одного ресурса. Думайте об этом, как лист спрайта. Или как приклеить фотографии к большому белому листу бумаги. Вам не нужна новая текстура для каждой области текстуры. Например: скажем, у вас есть звездное изображение, то есть 250x250 пикселей и изображение космического корабля, которое составляет 100x100 пикселей. Вы можете поместить оба из текстуры, которая измеряет 512x256. Вы создаете область текстуры для звезды (250x250) на 0, 0. Затем создаете вторую область текстуры для космического корабля при 251, 0.

В этом сценарии все еще есть оставшаяся область для других изображений, выдувших космический корабль, если они достаточно маленькие, чтобы соответствовать. На изображении ниже показано, как будет выглядеть ваша текстура, если бы вы увидели ее в памяти.

texture with two resources added

Надеюсь это поможет.

Другие советы

Ваши текстуры огромны! Вы очень уверены, что они вам нужны такие большие?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top