Hey.
I tried to delete the background of texture,
glEnable (GL_BLEND);
glColor4f(1.0f,1.0f,1.0f,1.0f);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBegin(GL_QUADS); //draw...
glTexCoord2d(1.0f,1.0f);glVertex3f( xP, yP2, 0);
glTexCoord2d(0.0f,1.0f);glVertex3f( xP2, yP2, 0);
glTexCoord2d(0.0f,0.0f);glVertex3f( xP2, yP, 0);
glTexCoord2d(1.0f,0.0f);glVertex3f( xP, yP, 0);
glEnd();
So it deleted it... but it draws other background inplace...
It draw the glClearColor
glClearColor(0.f, 1.f, 0.f, 0.1f);
but I want it [font=Arial,]transparent.[/font]
[font=Arial,]
[/font]
[font=Arial,]
[/font]
[font=Arial,]You see the green background they have?[/font]
[font="Arial,"][size=2]
[/font]
Cancel
Save
Hey.
I tried to delete the background of texture,
glEnable (GL_BLEND);
glColor4f(1.0f,1.0f,1.0f,1.0f);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBegin(GL_QUADS); //draw...
glTexCoord2d(1.0f,1.0f);glVertex3f( xP, yP2, 0);
glTexCoord2d(0.0f,1.0f);glVertex3f( xP2, yP2, 0);
glTexCoord2d(0.0f,0.0f);glVertex3f( xP2, yP, 0);
glTexCoord2d(1.0f,0.0f);glVertex3f( xP, yP, 0);
glEnd();
So it deleted it... but it draws other background inplace...
It draw the glClearColor
glClearColor(0.f, 1.f, 0.f, 0.1f);
but I want it [font="Arial,"]transparent.[/font]
[font="Arial,"]
[/font]
[font="Arial,"]
[/font]
[font="Arial,"]You see the green background they have?[/font][font="Arial,"] [/font]
Are your game-play objects use 32-bit textures? Looks like they haven't alpha channels...
Cancel
Save
I think I didn't understand what you said.
the textures are png, I loaded them with sfml.
texture[fNum].LoadFromFile(fName)
Cancel
Save
I think I didn't understand what you said.
the textures are png, I loaded them with sfml.
texture[fNum].LoadFromFile(fName)
Did you checked alpha (mask) channels of them? (Better if you would upload this texture).
Cancel
Save
this is the picture
Texture is set correct (it contains mask channel which have visible and invisible (intensity) pixels).
OpenGL code which you putted in is correct too (for transparent effect).
I think bug is in another place.
Just a warning message: you calling glTexCoord2d (which expects parameters of type "double") when you put there "float" ("1.0f -> 1.0").
Cancel
Save
thanks a lot about the help.
here the full code of the draw.if(ySpeed != 0 || xSpeed != 0)
deg = fmod(atan2(yP-(yP+ySpeed),xP-(xP+xSpeed))/3.14159265f*180.f,360.f);
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glPushMatrix();
glTranslatef(0.5f, 0.5f, 0.f);
glRotatef(deg, 0.f, 0.f, 1.f);
glTranslatef(-0.5f,-0.5f, 0.f);
glMatrixMode(GL_MODELVIEW);
glEnable (GL_BLEND);
glColor4f(1.0f,1.0f,1.0f,1.0f);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBegin(GL_QUADS); //draw...
glTexCoord2d(1.0,1.0);glVertex3f( xP, yP2, 0);
glTexCoord2d(0.0,1.0);glVertex3f( xP2, yP2, 0);
glTexCoord2d(0.0,0.0);glVertex3f( xP2, yP, 0);
glTexCoord2d(1.0,0.0);glVertex3f( xP, yP, 0);
glEnd();
glMatrixMode(GL_TEXTURE);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glDisable (GL_BLEND); }
init func of opengl:
glClearDepth(1.f);
glClearColor(0.f, 1.f, 1.f, 0.f);
glEnable(GL_DEPTH_TEST);
glDepthMask(GL_TRUE);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(90.f, 1.f, 1.f, 500.f);
GlTextLoad("pic.png", 0); //load picture...
GlTextLoad("Menu1.png", 1);
GlTextLoad("Menu2.png", 2);
GlTextLoad("Menu3.png", 3);
GlTextLoad("pic1.png", 4);
GlTextLoad("pic2.png", 5);
GlTextLoad("Back.png", 6);
glEnable(GL_TEXTURE_2D);
gltexload func: (load texture with sfml)
bool WinS::GlTextLoad(char* fName, int fNum)
{
if(!texture[fNum].LoadFromFile(fName))
{
MessageBox(NULL, "Can't load the texture...", "Eror", MB_OK);
Running = false;
return false;
}
texture[fNum].CreateMaskFromColor(sf::Color(1, 1, 1 , 0));
return true;
}
resize opengl
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(90.0f, float(width) / float(height), 1.0f, 500.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
This is in the start of the render func:
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
I don't think there is more relevant code...
Cancel
Save
texture[fNum].CreateMaskFromColor(sf::Color(1, 1, 1 , 0));
I think this operation overwrites image's mask channel. Why to do this if your image already has a mask? (P.S. Just currently looked at SFML documentation)
Cancel
Save
I added it just now, for check if it will do something, and forgot to delete it.
Without that it still happen.
I found what the problem.
SFML load the texture as 8 bit...
Cancel
Save