2012-10-19 12 views
5

GLWallpaper hizmetinde kaynakları veya varlıkları yüklemeye Nasıl, Mark F Guerra tarafından bu example gibi canlı duvar kağıdı oluşturmak mümkün duyuyorum Ama bazı sprite eklemek istiyorum duvar kağıdına animasyon.Ben <code>OpenGL</code> duvar kağıdı hizmetini</strong> kullanan Android canlı duvar kağıdı <strong>geliştirmeye çalışıyorum

Başka bir projede zaten bir OpenGL ES hareketli grafik oluşturdum. Canlı duvar kağıdı projesinde animasyonumu yeniden oluşturmak istiyorum.

Ama glwallpaper kullanırken benim canlı duvar kağıdı projesinde i yaklaşık yükleme alma kaynakları veya varlık dosyalarını Context almak ve varlıkları veya kaynakların

Herhangi öneri veya örnek kodları veya bağlantıdan benim görüntüleri yüklemek mümkün değildir değilim Servis çok yardımcı olacaktır.

Tüm öneri ve/veya örnek kodlar kabul edilir.

cevap

1

aşağıda gösterildiği gibi bağlamını kullanabilir ...
getAssets() kullanarak, varlıklar klasörüne kaydedilmiş dosyaları alabilirsiniz ve getResources() kullanarak projenizdeki kaynak klasörünün içine yerleştirilmiş dosyaları alabilirsiniz.

1

İçeriği motorunuzdan oluşturucunuza geçirin. Ardından, öğeyi yüklemek için bazı örnek kodlar. yani resourceID, R.drawable.xxx bitmap'inizdir. Bunu yaptığım bir doku atlas sınıfında var, bu yüzden yöntemde birkaç şey tam olarak bulunmayabilir. Örneğin, bitmap'i yüklemek için kullanabileceğim seçenekler, inscaled = false değerini içerir; Örneğin, hata işlemimi kaldırmak için bunu değiştirdim. Biz oluşturucuya parametre olarak getAssets() veya getResources() kullanabilirsiniz

in wallpaper service class: 
------------------- 
renderer = new GlRenderer(this); 

in renderer class: 
---------------- 
private Context context; 

public GlRenderer(Context context) { 
this.context = context; 

yerine this

/** 
* Load the resource and push it to the gpu memory, setup default values 
* @param gl 
* @param context 
* @param resourceID 
* @return glTextureID 
* 
*/ 
public int loadFromContext(GL10 gl, Context context, int resourceID) { 
    mResourceID = resourceID; 
    Bitmap bmp = BitmapFactory.decodeResource(context.getResources(), resourceID, sBitmapOptions); 
    sourceWidth = bmp.getWidth(); 
    sourceHeight = bmp.getHeight(); 
    gl.glGenTextures(1, mGLTextures, 0); 
    mGLTextureID = mGLTextures[0]; 

    // bind and set min and mag scaling to bilinear 
    gl.glBindTexture(GL10.GL_TEXTURE_2D, mGLTextureID); 
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR); 
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR); 

    // repeat by default 
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_REPEAT); 
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_REPEAT); 

    // upload bmp to video memory 
    GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bmp, 0); 

    // check error 
    int error = gl.glGetError(); 
    if (error != GL10.GL_NO_ERROR) { 
     // cleanup 
     bmp.recycle(); 
     bmp = null; 
     mLoaded = false; 
      // error handling here 
    } else { 

     // unbind. 
     gl.glBindTexture(GL10.GL_TEXTURE_2D, 0); 
     bmp.recycle(); 
     bmp = null; 
     mLoaded = true; 
     mDirty = true; 

     } 
     return mGLTextureID; 
} 
İlgili konular