BLO*_*LOB 8 android glsurfaceview
对于我的游戏,我正在考虑在我GLSurfaceView使用RelativeLayout的基础上绘制UI元素(TextView用于显示已用时间,按钮用于暂停/重新开始游戏)...
直到现在,我自己直接将所有UI元素绘制到surfaceView,但考虑到Android UI提供的广泛选项(如更改字体和颜色的字体),我决定使用它.
问题:
GLSurfaceView或者直接绘制所有UI内容是否更好GLSurfaceView?TextView通过使用runOnUiThread()方法定期更新UI元素(Say )的内容(每16毫秒)...这是不是很糟糕?这是测试java代码,我用它来设置RelativeLayout ... glView是GLSurfaceView实例.
rl = new RelativeLayout(this);
rl.addView(glView);
tv = new TextView(this);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
lp.addRule(RelativeLayout.ALIGN_TOP);
tv.setLayoutParams(lp);
tv.setText("FPS: 0");
tv.setBackgroundColor(0x4060ff70);
rl.addView(tv);
setContentView(rl);
Run Code Online (Sandbox Code Playgroud)
- 在 GLSurfaceView 之上绘制 UI 元素是一个很好的做法,还是直接将所有 UI 内容自己绘制到 GLSurfaceView 更好?
如果您希望 Android 布局系统提供的灵活性,那么在 GLSurfaceView 之上绘制 Android 控件似乎是个好主意。警告虽然这些控件的绘制速度可能比 glSurfaceView 慢得多,所以请确保 UI 不需要太多的图形能力来渲染并且不会更新得太快。
自己渲染所有内容是一种选择,但这样你就失去了可以从 Android UI 系统获得的所有功能。
- 我将使用 runOnUiThread() 方法定期(每 16 毫秒)更新 UI 元素(例如 TextView)的内容...这很糟糕吗?
对我来说听起来不错。
- 我的游戏会受到强制关闭的影响吗?
这与其他问题没有任何关系。如果您遵循正确的用法并且不会引发异常,那么应该没问题。如果您确实导致异常,那么您的应用程序将被强制关闭(除非您正确处理异常)。
| 归档时间: |
|
| 查看次数: |
6556 次 |
| 最近记录: |