I tryed it, it is not the solution
El sábado, 21 de abril de 2012 20:23:26 UTC+2, Nightwolf escribió:
>
> Change zNear and zFar parameters in GLU.gluPerspective(gl, 45.0f,
> (float)width / (float)height, 0.1f, 100.0f) to 1 and 1000.
> If it helps then your square is near far clipping plane.
>
> пятница, 20 апреля 2012 г., 19:41:54 UTC+4 пользователь saex написал:
>>
>> Hi
>>
>> I'm displaying a OPENGL ES 1.X square with a texture, and the user can
>> zoom in and out the square scaling it.
>>
>> When the user zoom's out the square (the square get's scaled going
>> smaller in the screen) the texture of the square get's rare translucent
>> squares, like tiles from googlemaps.
>>
>> I think that the scaling function from OpenGL is now working in the
>> better way.
>>
>> How can i improve it?
>>
>> These are my OpenGL GLSurfaceView main functions:
>>
>> public void onSurfaceCreated(GL10 gl, EGLConfig config) {
>> gl.glDisable(GL10.GL_DITHER); //dithering OFF
>> gl.glEnable(GL10.GL_TEXTURE_2D); //Texture Mapping ON
>> gl.glShadeModel(GL10.GL_SMOOTH); //Smooth Shading
>> gl.glClearDepthf(1.0f); //Depth Buffer Setup
>> gl.glEnable(GL10.GL_DEPTH_TEST); //Depth Testing ON
>> gl.glDepthFunc(GL10.GL_LEQUAL);
>> gl.glClearColor(0,0,0,0); //fondo transparente
>> gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);
>>
>>
>> //Cargamos la textura del cubo.
>> for (int i=0;i<squares.size();i++){
>> if (squares.get(i)!=null)
>> squares.get(i).loadGLTexture(gl, context);
>> }
>> }
>>
>> public void onDrawFrame(GL10 gl) {
>> //Limpiamos pantalla y Depth Buffer
>> gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
>> gl.glLoadIdentity();
>>
>> mg.getCurrentProjection(gl); //volvemos a generar las matrices por
>> que es un bucle
>> mg.getCurrentModelView(gl);
>> .
>> .
>> .
>> .
>> gl.glTranslatef(X, Y, Z); //Move z units into the screen
>> gl.glRotatef(zrot, 0.0f, 0.0f, 1.0f); //Z
>> gl.glScalef(scale, scale, 1.0f);
>>
>> for (int i=0;i<squares.size();i++){
>> if (squares.get(i)!=null)
>> squares.get(i).draw(gl); //Draw the Cube
>> }
>> }
>>
>> public void onSurfaceChanged(GL10 gl, int width, int height) {
>> if(height == 0) { //Prevent A Divide By Zero By
>> height = 1; //Making Height Equal One
>> }
>>
>> gl.glViewport(0, 0, width, height); //Reset The Current Viewport
>> gl.glMatrixMode(GL10.GL_PROJECTION); //Select The Projection
>> Matrix
>> gl.glLoadIdentity(); //Reset The Projection Matrix
>>
>> //Calculate The Aspect Ratio Of The Window
>> GLU.gluPerspective(gl, 45.0f, (float)width / (float)height, 0.1f,
>> 100.0f);
>>
>> gl.glMatrixMode(GL10.GL_MODELVIEW); //Select The Modelview Matrix
>> gl.glLoadIdentity(); //Reset The Modelview Matrix
>>
>> }
>>
>> and these are my square polygon class main functions:
>>
>> public void draw(GL10 gl) {
>> gl.glFrontFace(GL10.GL_CCW);
>> //Bind our only previously generated texture in this case
>> gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
>> //Point to our vertex buffer
>> gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);
>> gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, textureBuffer);
>> //Enable vertex buffer
>> gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
>> gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
>> //Draw the vertices as triangle strip
>> gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, vertices.length / 3);
>> //Disable the client state before leaving
>> gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
>> gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
>> }
>>
>> //Carga de texturas
>> public void loadGLTexture(GL10 gl, Context context) {
>> //Generamos un puntero de texturas
>> gl.glDeleteTextures(1, textures, 0); //libero memoria
>> gl.glGenTextures(1, textures, 0);
>> //y se lo asignamos a nuestro array
>> gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
>> //Creamos filtros de texturas
>> 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_LINEAR);
>> //Diferentes parametros de textura posibles GL10.GL_CLAMP_TO_EDGE
>> gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S,
>> GL10.GL_REPEAT);
>> gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T,
>> GL10.GL_REPEAT);
>>
>> //Usamos Android GLUtils para espcificar una textura de 2 dimensiones
>> para nuestro bitmap
>> GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
>>
>> //Checkeamos si el GL context es versión 1.1 y generamos los Mipmaps por
>> Flag. Si no, llamamos a nuestra propia implementación
>> if(gl instanceof GL11) {
>> gl.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_GENERATE_MIPMAP,
>> GL11.GL_TRUE);
>> GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
>> } else {
>> buildMipmap(gl, bitmap);
>> }
>> //Limpiamos los bitmaps
>> bitmap.recycle();
>> bitmap=null;
>> System.gc();
>> }
>>
>>
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en