Source code is below. Robert Green provides some helpful information, for which I am thankful.
However, I am not clear on two of the points. I currently have the situation where no lines at all show on the emulator (the background color does) and things work perfectly on the G1. On Aug 2, 11:26 am, Robert Green <rbgrn....@gmail.com> wrote: .... > 1) You are in a native resolution to the screen you're rendering on > (turn all the density and screen-size stuff on in the manifest to > avoid compat mode) Are these the attributes on the "support-screens" tag? I did not have that tag, but adding it and turning on all the attributes in the check- boxes did not solve the problem. > 2) You draw the lines centered on their pixel, so they look a half > pixel off. > -- To draw a horizontal line across the top row of pixels, you need to > make the line with 1.0f and have y be 0.5f (because it will draw from > 0 to 1 that way) I am drawing in fixed point projection(?) space, so the relationship of the lines to pixels is not clear. Also, I don't want to have to redraw the lines when the scale changes - I want to be able to zoom and pan easily. Is there a way to achieve that and have the lines show? > 3) Make sure you don't have any z-fighting. Drawing 2 things on the > exact same plane with depth-test turned on causes bad results on many > opengl implementations. Depth test turned off. I'm doing 2D only, so I think I'm clear there. Again, thanks for the help. ============ CODE SNIPS ============== ----- Create glSurfaceView ------- private GLSurfaceView makeGLSurfaceView(GLSurfaceView.Renderer renderer, Context context) { GLSurfaceView view = new GLSurfaceView(context); view.setDebugFlags(GLSurfaceView.DEBUG_CHECK_GL_ERROR | GLSurfaceView.DEBUG_LOG_GL_CALLS); view.setEGLConfigChooser(false); if ( renderer != null ) { view.setRenderer(renderer); view.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); } view.getHolder().setFormat(PixelFormat.OPAQUE); return view; } // make gl surface view ------------ onDrawFrame ---------- // Everything stuffed into onDrawFrame to make it easy to read on forum @Override public void onDrawFrame(GL10 gl) { gl.glClearColor(0,0,.2f, 1f); gl.glDisable(GL10.GL_CULL_FACE); gl.glShadeModel(GL10.GL_FLAT); gl.glDisable(GL10.GL_DEPTH_TEST); gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); gl.glMatrixMode(GL10.GL_PROJECTION); gl.glLoadIdentity(); gl.glViewport(0, 0, MyApp._width, MyApp._height); gl.glEnable(GL10.GL_BLEND); gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); gl.glEnable(GL10.GL_LINE_SMOOTH); gl.glDisableClientState(GL10.GL_COLOR_ARRAY); _hgt2width = (float) MyApp._width / MyApp._height; gl.glOrthof(-_hgt2width, _hgt2width, -1, 1, 1, -1); gl.glScalef(1, _hgt2width, 1); gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); float lscale = .002f*MyApp._curScale; gl.glPushMatrix(); gl.glColor4f(1f, 1f, 0f, 1f); gl.glTranslatef(.375f, .5f, 0f); gl.glScalef( lscale, lscale, 1f); gl.glVertexPointer(2, GL10.GL_FIXED, 0, _lineVertices); gl.glLineWidthx(0x1); drawArrays(gl); gl.glPopMatrix(); gl.glPushMatrix(); gl.glColor4f(1f, 1f, 1f, 1.0f); gl.glScalef( lscale*8, lscale*8, 1f); gl.glVertexPointer(2, GL10.GL_FIXED, 0, _lineVertices); gl.glLineWidthx(0x1); drawArrays(gl); gl.glPopMatrix(); } void drawArrays(GL10 gl) { gl.glDrawArrays(GL10.GL_LINE_STRIP, 0, 5); //small square gl.glDrawArrays(GL10.GL_LINE_STRIP, 5, 5); //medium square gl.glDrawArrays(GL10.GL_LINE_STRIP, 10, 5);//large square gl.glDrawArrays(GL10.GL_LINE_STRIP, 15, 2);//x axis gl.glDrawArrays(GL10.GL_LINE_STRIP, 17, 2);//y axis gl.glDrawArrays(GL10.GL_LINE_STRIP, 19, 2);//X half gl.glDrawArrays(GL10.GL_LINE_STRIP, 21, 2);//X half } void makeLines() { int hlf = 0x08000; int one = 0x10000+hlf; int sml = one/8; int ten = one; int big = 0x40000000; Log.d("===jrm", String.format("one:%x big:%x", one, big)); int vertices[] = { -sml , sml, //0 start square - scale 1/10 sml , sml, //1 sml , -sml, //2 -sml , -sml, //3 -sml , sml, //4 -one , one, //5 start square - scale 1 one , one, //6 one , -one, //7 -one , -one, //8 -one , one, //9 -ten , ten, //10 start square - scale 10 ten , ten, //11 ten , -ten, //12 -ten , -ten, //13 -ten , ten, //14 -big , 0, //15 start coord axes over huge area big , 0, //16 0 , big, //17 0 , -big, //18 -big , -big, //19 start X over huge dimensions big , big, //20 -big , big, //21 big , -big, //22 ten , one // BUT? Without this line, blows up if openGL debug is enabled }; this.numLines = vertices.length/2; ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length*4); vbb.order(ByteOrder.nativeOrder()); _lineVertices = vbb.asIntBuffer(); _lineVertices.put(vertices); _lineVertices.position(0); } -- 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