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:
[ol]
[li]void SC_OBJ::sDrawOBJ()[/li][li]{[/li][li]glTranslatef(0,0,-1.0f);[/li][li]glEnable(GL_TEXTURE_2D);[/li][li]//glDisable(GL_COLOR_MATERIAL);[/li][li]glColor3f(1,1,1);[/li][li]for(int drawed = 0; drawed < facenum; drawed++)[/li][li]{[/li][li] if(triangle[drawed].busemtl == true)[/li][li] {[/li][li] if(material[triangle[drawed].materialindex].bmap_d == true)[/li][li] {[/li][li] glDisable(GL_DEPTH_TEST); // Maybe here is our problem?[/li][li] glEnable(GL_BLEND);[/li][li] glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);[/li][li] }[/li][li] usetex = material[triangle[drawed].materialindex].map_Kd_index;[/li][li] stexture[usetex].sUseTexture();[/li][li] glEnable(GL_DEPTH_TEST);[/li][li] }[/li][li] [/li][li]glBegin(GL_TRIANGLES);[/li][li]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]); [/li][li]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]); [/li][li]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]);[/li][li]glEnd();[/li][li]}[/li][li]glDisable(GL_BLEND);[/li][li]}[/li][/ol]
And here is a part from our texture loader:
[ol]
[li]glGenTextures(1, &uTEXTURE[0]);[/li][li]glBindTexture(GL_TEXTURE_2D, uTEXTURE[0]);[/li][li]glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);[/li][li]glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);[/li][li]glTexImage2D(GL_TEXTURE_2D, 0, 4, texturedata.width, texturedata.height, 0, GL_RGBA, GL_UNSIGNED_BYTE, texturedata.imageData);[/li][/ol]
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…