Another solution is to display regular view on top of the 3D view.

On Sep 2, 8:14 am, Robert Green <rbgrn....@gmail.com> wrote:
> Light Racer 3D uses dynamic text by drawing to a HUD canvas and then
> uploading that texture for each update.  It did work to upload the new
> texture every frame (score changing every tick) but it did have a
> slight impact on performance.  I ended up just updating every 10
> frames.  For my next game I'm going to add a utility that uploads an
> alphanumeric texture and stores letter sizes and coords, then draws a
> quad for each, like was suggested above.  It takes a little longer to
> build that but once you've got it, it will be the fastest solution for
> really dynamic stuff like scores that change very often or timers that
> count down with 100ths of a second or something like that.
>
> On Sep 1, 9:51 pm, David Minor <davemi...@gmail.com> wrote:
>
>
>
> > I believe you can also draw text on a Canvas, and then use the
> > underlying bitmap to create a texture.
>
> > On Sep 1, 4:21 pm, Dan Sherman <impact...@gmail.com> wrote:
>
> > > Yeah, that's what we were looking into doing.  Was just hoping that there
> > > might be a nice framework I missed somehow :)
>
> > > Thanks man :)
>
> > > On Tue, Sep 1, 2009 at 3:10 PM, Phred <phr...@gmail.com> wrote:
>
> > > > Dan,I've yet to start messing with GL ES so this is coming from
> > > > Direct3D experience but the idea is the same.
>
> > > > What you can do is create a texture with all the letters of the
> > > > alphabet, numbers 0-9 and symbols. There are apps out there that will
> > > > create such a texture and an XML file that contains the texture co-
> > > > ords for each letter/number/symbol. This one would work as it exports
> > > > in PNG format which Android supports:
> > > >http://www.angelcode.com/products/bmfont/
>
> > > > To draw the text you have render 1 quad for each alpha-numeric
> > > > character being drawn at the location on screen you want it drawn too.
> > > > So if your text is "Hello" then you will have to render 5 quads. Each
> > > > quad will contain the texture co-ords of the corresponding alpha-
> > > > numeric character in the texture.
>
> > > > I would create a vertex buffer object at start-up and make it large
> > > > enough to hold 256 characters. Your draw text function would then fill
> > > > out this buffer each frame update with the updated text location co-
> > > > ordinates then all you have to do is get OpenGL to render it. You will
> > > > want it rendered in orthographic projection mode and using screen
> > > > space co-ordinates... that is you don't want OpenGL to transform or
> > > > light those verticies for you. Again not sure of the GLES pipeline as
> > > > all my experience is Direct3D.
>
> > > > Make sense kinda kinda?
>
> > > > Fred
>
> > > > On Aug 24, 3:27 pm, Dan Sherman <impact...@gmail.com> wrote:
> > > > > We're having the same issues in some of our games.  Unfortunately 
> > > > > running
> > > > > into issues drawing dynamic text in OpenGL, any chance you'd care to
> > > > share
> > > > > your solution for that? (if you have one that is)
>
> > > > > - Dan
>
> > > > > On Mon, Aug 24, 2009 at 2:39 PM, TjerkW <tje...@gmail.com> wrote:
>
> > > > > > The SpriteMethodTest application shows the benefits of opengl,
> > > > > > the main benefit is:
>
> > > > > > If you have a lot of sprites / a lot of things happening at the same
> > > > > > time it is better to use opengl.
> > > > > > I am porting my game to opengl now. It was too slow on only the 
> > > > > > Canvas
> > > > > > (30+ things moving at the same time)
>
> > > > > > On 22 jul, 12:45, MrChaz <mrchazmob...@googlemail.com> wrote:
> > > > > > > The SurfaceView is fine for games, at least simple ones.
> > > > > > > Have a look at the LunarLander sample.
>
> > > > > > >http://developer.android.com/guide/samples/LunarLander/index.html
>
> > > > > > > On Jul 21, 9:33 pm, klirr <haskell...@gmail.com> wrote:
>
> > > > > > > > I use SurfaceView for my game, tried normal View first but that 
> > > > > > > > was
> > > > to
> > > > > > > > slow.
> > > > > > > > Problem is, it still is. The redrawing just isn't anywhere fast
> > > > enough
> > > > > > > > for a game. So unless it is a lot faster on the real phone this
> > > > won't
> > > > > > > > cut it at all.
> > > > > > > > Is it necessary to use OpenGL for games?
>
> > > > > > > > package com.android.shmup;
>
> > > > > > > > import android.app.Activity;
> > > > > > > > import android.content.Context;
> > > > > > > > import android.graphics.*;
> > > > > > > > import android.os.Bundle;
> > > > > > > > import android.view.View;
> > > > > > > > import android.view.KeyEvent;
>
> > > > > > > > public class Shmup extends Activity {
>
> > > > > > > >     @Override
> > > > > > > >     protected void onCreate(Bundle savedInstanceState) {
> > > > > > > >         super.onCreate(savedInstanceState);
> > > > > > > >         setContentView(new GameView(this));
> > > > > > > >     }
>
> > > > > > > >     private static class GameView extends View {
> > > > > > > >         private Paint mPaint = new Paint();
> > > > > > > >         private int x;
> > > > > > > >         private int y;
>
> > > > > > > >         public GameView(Context context) {
> > > > > > > >             super(context);
> > > > > > > >             x = 135;
> > > > > > > >             y = 303;
> > > > > > > >             setFocusable(true);
> > > > > > > >             requestFocus();
> > > > > > > >         }
>
> > > > > > > >         @Override
> > > > > > > >         protected void onDraw(Canvascanvas) {
> > > > > > > >             Paint paint = mPaint;
> > > > > > > >            canvas.translate(10, 10);
> > > > > > > >            canvas.drawColor(Color.rgb(184,134,11));
> > > > > > > >             paint.setColor(Color.rgb(107,142,35));
> > > > > > > >             paint.setStrokeWidth(1);
> > > > > > > >            canvas.drawRect(x, y, x+30, y+7, paint);
> > > > > > > >            canvas.drawRect(x+10, y+7, x+20, y+27, paint);
> > > > > > > >            canvas.drawRect(x+5, y+27, x+25, y+32, paint);
> > > > > > > >         }
>
> > > > > > > >         @Override
> > > > > > > >         public boolean onKeyDown(int keyCode, KeyEvent event) {
> > > > > > > >                 if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
> > > > > > > >                         y -= 3;
> > > > > > > >                         invalidate();
> > > > > > > >                 } else if (keyCode == 
> > > > > > > > KeyEvent.KEYCODE_DPAD_LEFT) {
> > > > > > > >                         x -= 3;
> > > > > > > >                         invalidate();
> > > > > > > >                 } else if (keyCode == 
> > > > > > > > KeyEvent.KEYCODE_DPAD_DOWN) {
> > > > > > > >                         y += 3;
> > > > > > > >                         invalidate();
> > > > > > > >                 } else if (keyCode == 
> > > > > > > > KeyEvent.KEYCODE_DPAD_RIGHT)
> > > > {
> > > > > > > >                         x += 3;
> > > > > > > >                         invalidate();
> > > > > > > >                 }
> > > > > > > >                 return true;
> > > > > > > >         }
>
> > > > > > > >     }
>
> > > > > > > > }
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers-unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to