Texture artifacting/bleeding Open GL ES 1.X

I’m using the old 1.1 system to render my tiles and am getting some grainy effects on the edges of certain tiles with a specific phone. (A phone with 450 Mhz GPU will render fine, the one in question is 300 Mhz) I’m wondering if there’s a setting I need to use or if it’s just that the mobile device can’t render fast enough, which I would then need to optimize.

Here’s what I use to bind the texture, (it’s a 320x320 texture atlas for a total of 100 tiles)


                       InputStream inputStream = assetM.open(stream);
		       Bitmap _textureMAP = BitmapFactory.decodeStream(inputStream);
			
			gl.glGenTextures(1, tex, 0);
			gl.glBindTexture(GL10.GL_TEXTURE_2D, tex[0]);
			
			gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
			gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_NEAREST);
			
			gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE);
			gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE);
			
			GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, _textureMAP, 0);
			
			_textureMAP.recycle();

And these are the settings I use for the GL Surface View (window)


                gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
		gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
		
		gl.glEnable(GL10.GL_TEXTURE_2D);
		gl.glEnable(GL10.GL_BLEND);
		gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);


Each tile type has it’s own st (uv) coordinates and every tile has it’s own vertex buffer. There’s also a method in tile update to make sure the tile is inside my viewport and will only be rendered if it is. So for each frame to draw tiles it goes like this


gl.glBindTexture(GL10.GL_TEXTURE_2D, bitmaps.worldOneTextures.tex[0]);
gl.glLoadIdentity();

for (int i = 0; i < mScreen.tiles.size(); i++) {

	Tile t = mScreen.tiles.get(i);
	if (!t.drawIt) {  continue;  }
	drawTile(TileVBOs.get(i), texCoords.get(Integer.toString(t.type)), gl);
}

private void drawTile(FloatBuffer vbo, FloatBuffer coords, gl) {

	gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vbo);
	gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, coords.position(0));
		
	gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, vertices.length / 3);
	
}

the vertex buffers are in an ArrayList “TileVBOs” and the uv coordinates are in a HashMap<String, FloatBuffer> “texCoords”