2012-02-01 78 views
0

我正在用Java设计Android上的Open GLES游戏。有没有办法将上下文传递到onDrawFrame(GL10 gl)?

显然我使用了很多纹理,很快我就会用完内存。

我对Android和Java相当陌生,但我认为解决这个问题最简单的方法是用位图摧毁对象,而目前我不需要让垃圾回收器回收内存然后在我需要相应的纹理时在后期重新创建这些对象。

事情是这样的:

background = null; 

然后当我需要在背景物体的纹理:

background = new Background(context); 

似乎非常简单明了,不同之处在于,该上下文(我需要为我的课背景功能,因为它通过BitmapFactory从它加载纹理)不会传递到onDrawFrame(GL10 gl)函数中,我的主要游戏循环是在哪里,我需要它!

如果我尝试在GL10 gl之后添加上下文作为第二个参数,则会出现错误 - 这似乎不可行。

有人知道如何将上下文传递到onDrawFrame或其他方式如何清除内存中的上下文对象,然后再次恢复它们?

回答

0

您必须绘制到SurfaceViewGLSurfaceView ...明显是View类型,因此具有getContext()方法。

+0

I'afraid它不
GLSurfaceView.Renderer

EasyCoder 2012-02-02 22:09:21

+0

GLSurfaceView.Renderer>类概述>的公共方法> onDrawFrame(GL10 GL)/ onSurfaceChanged(GL10 GL,INT宽度,INT高度)/ onSurfaceCreated(GL10 GL,一个EGLConfig配置) - 恐怕只有这三种方法。 – EasyCoder 2012-02-02 22:18:02

+0

这是一个*界面*。我指的是* view *。哪个对象实现该接口并不重要...在自定义的GLSurfaceView中实现它很常见,即“类MySurfaceView扩展了GLSurfaceView实现GLSurfaceView.Renderer”。 – 2012-02-02 22:42:52

相关问题