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 5 of 5

Thread: Using 32bit bitmaps with alpha channel as a texture - Transparency problem

Threaded View

  1. #1
    Junior Member Newbie
    Join Date
    Aug 2013
    Posts
    11

    Lightbulb Using 32bit bitmaps with alpha channel as a texture - Transparency problem

    Hello, World!
    I'm developing a small game with my friend and we have a small but important problem.
    We are trying to make transparency with 32-bit bitmap textures but not successfully. We think that the problem is in depth test or in blending, but we are beginners in OpenGL, so we can't solve this problem. Hope you can ;-)
    Here is our coding of draw function:

    1. void SC_OBJ::sDrawOBJ()
    2. {
    3. glTranslatef(0,0,-1.0f);
    4. glEnable(GL_TEXTURE_2D);
    5. //glDisable(GL_COLOR_MATERIAL);
    6. glColor3f(1,1,1);
    7. for(int drawed = 0; drawed < facenum; drawed++)
    8. {
    9. if(triangle[drawed].busemtl == true)
    10. {
    11. if(material[triangle[drawed].materialindex].bmap_d == true)
    12. {
    13. glDisable(GL_DEPTH_TEST); // Maybe here is our problem?
    14. glEnable(GL_BLEND);
    15. glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
    16. }
    17. usetex = material[triangle[drawed].materialindex].map_Kd_index;
    18. stexture[usetex].sUseTexture();
    19. glEnable(GL_DEPTH_TEST);
    20. }
    21. glBegin(GL_TRIANGLES);
    22. if(normalnum > 0)glNormal3f(triangle[drawed].nx[0], triangle[drawed].ny[0], triangle[drawed].nz[0]);if(texcoordnum > 0)glTexCoord2f(triangle[drawed].s[0],triangle[drawed].t[0]);glVertex3f(triangle[drawed].vx[0], triangle[drawed].vy[0], triangle[drawed].vz[0]);
    23. if(normalnum > 0)glNormal3f(triangle[drawed].nx[1], triangle[drawed].ny[1], triangle[drawed].nz[1]);if(texcoordnum > 0)glTexCoord2f(triangle[drawed].s[1],triangle[drawed].t[1]);glVertex3f(triangle[drawed].vx[1], triangle[drawed].vy[1], triangle[drawed].vz[1]);
    24. if(normalnum > 0)glNormal3f(triangle[drawed].nx[2], triangle[drawed].ny[2], triangle[drawed].nz[2]);if(texcoordnum > 0)glTexCoord2f(triangle[drawed].s[2],triangle[drawed].t[2]);glVertex3f(triangle[drawed].vx[2], triangle[drawed].vy[2], triangle[drawed].vz[2]);
    25. glEnd();
    26. }
    27. glDisable(GL_BLEND);
    28. }



    And here is a part from our texture loader:


    1. glGenTextures(1, &uTEXTURE[0]);
    2. glBindTexture(GL_TEXTURE_2D, uTEXTURE[0]);
    3. glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    4. glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    5. glTexImage2D(GL_TEXTURE_2D, 0, 4, texturedata.width, texturedata.height, 0, GL_RGBA, GL_UNSIGNED_BYTE, texturedata.imageData);




    Here are a couple of screenshots to show, what exactly happens...

    proxict.rajce.idnes.cz/OpenGL_screenshots#Screen0.jpg - This is not how it should look like...// in our scene

    proxict.rajce.idnes.cz/OpenGL_screenshots#screen2.jpg - This is not how it should look like...// in our scene



    proxict.rajce.idnes.cz/OpenGL_screenshots#Sniper0001.jpg - Rendered picture in Cinema 4D

    proxict.rajce.idnes.cz/OpenGL_screenshots#Sniper2_0001.jpg - Another rendered picture in Cinema 4D

    Thanks in advance...
    Last edited by ProXicT; 08-23-2013 at 07:31 PM. Reason: For a better summary..

Posting Permissions

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