Part of the Khronos Group
OpenGL.org

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 4 of 4

Thread: Blending causes unexpected effect

  1. #1
    Newbie Newbie
    Join Date
    Aug 2012
    Posts
    3

    Blending causes unexpected effect

    Hi all,
    I'm trying to enable blending to make sphere transparent.
    But when I enable it, the effect below occurred.

    The dividing line appears even if I use lighting. (Currently I just use glColor and disabled lighting.)
    Does anyone know the reason? Thanks.

    Here are some related code:
    One of the spheres which rotating around center:
    Code :
    	glColor4f(1.0, 1.0, 0.0, 0.6);
    	glPushMatrix();
    	glRotatef(angle, 0, 1, 0);
    	glTranslatef(0.0, 0.0, 1.0);
    	glScalef(0.3, 0.01, 0.3);
     
    	glEnable(GL_NORMALIZE);
    	GLUquadricObj *qobjSphere;
    	qobjSphere = gluNewQuadric();
    	gluQuadricDrawStyle(qobjSphere, GLU_FILL);
    	gluQuadricNormals(qobjSphere, GLU_SMOOTH);
    	gluSphere(qobjSphere, 1, 100, 100);
    	glPopMatrix();
    Enable blending:
    Code :
    glEnable(GL_BLEND);
    	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    	glEnable(GL_DEPTH_TEST);

  2. #2
    Newbie Newbie
    Join Date
    Aug 2012
    Posts
    3

    This is the effect of two gluDisk get intersected. I think they got the same problem.
    I tried to enable and disable lighting, depth buffer and culling, but nothing changed.

  3. #3
    Newbie Newbie
    Join Date
    Aug 2012
    Posts
    3
    Has anyone met this kind of problem before?

  4. #4
    Super Moderator OpenGL Guru
    Join Date
    Feb 2000
    Location
    Montreal, Canada
    Posts
    4,421
    Search for z-fighting.
    You can aleviate it a bit by setting glDepthFunc(GL_LEQUAL).
    ------------------------------
    Sig: http://glhlib.sourceforge.net
    an open source GLU replacement library. Much more modern than GLU.
    float matrix[16], inverse_matrix[16];
    glhLoadIdentityf2(matrix);
    glhTranslatef2(matrix, 0.0, 0.0, 5.0);
    glhRotateAboutXf2(matrix, angleInRadians);
    glhScalef2(matrix, 1.0, 1.0, -1.0);
    glhQuickInvertMatrixf2(matrix, inverse_matrix);
    glUniformMatrix4fv(uniformLocation1, 1, FALSE, matrix);
    glUniformMatrix4fv(uniformLocation2, 1, FALSE, inverse_matrix);

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •