   Blending and lines, code behaves differently depending on PC
  I'm currently writing a Simulator for a project im working at. I used to work with a buddy that handled the OpenGL part of it, but now he's gone so I inherited that aswell. I had to add a small piece of code for drawing lines (path taken by a vehicle), but while on some PCs it works fine (nice RED color), on my laptop and some other PCs it doesn't work, and the color is different, and seems actually blended (if i turn off the critical area display the line's color changes.). I've tried messing around with the position of my own code, but result doesn't change. I'm puzzled because it looks fine on some PCs and in some it looks odd :(I've tried to cut the unimportant code off and just posted the part that's releted to renderingglClearColor(0.0f, 0.0f, 0.0f, 1.0f);// Black BackgroundglClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glClearDepth(1.0f);glMatrixMode(GL_MODELVIEW);glLoadIdentity();   // Zoom handlingglTranslatef(Vista.x0 * Vista.Scale * (1.0f/ScaleIniziale), Vista.yy0 * Vista.Scale * (1.0f/ScaleIniziale), Vista.z0-5.0f);glScalef(Vista.Scale,Vista.Scale,Vista.Scale);   // LightsglCallList(ListeLuci.Lights);glPushMatrix(); // Draw stuff like the texture backgroundglEnable(GL_DEPTH_TEST);glDisable(GL_BLEND);glTranslatef(0.0f, 0.0f, 0.0f);glCallList(Liste.Map);glTranslatef(0.0f, 0.0f, 0.01f);glTranslatef(0.0f, 0.0f, -0.009f); // Draw transparent stuff (like critical area highlight)glEnable(GL_BLEND);glDisable(GL_DEPTH_TEST);glTranslatef(0.0f, 0.0f, 0.001f);if (m_view_critical == TRUE) glCallList(Liste.CriticalArea);glTranslatef(0.0f, 0.0f, 0.001f);if (m_view_FOVs == TRUE) DrawFOA();glTranslatef(0.0f, 0.0f, 0.001f);DrawVehicles(GL_RENDER);glTranslatef(0.0f, 0.0f,  0.005f);DrawTracks(GL_RENDER);glPopMatrix();glFlush();   // Draw non-transparent lines representing a graphglColor3ub(255,0,0);for(it = graph.begin(); it != graph.end(); it++){// [...] // Compute stufffor(itedge = edges.begin(); itedge != edges.end(); itedge++){glLineWidth (1);glBegin(GL_LINES);glVertex3f(FROM.x,FROM.y,0.0f);glVertex3f(TO.x,TO.y,0.0f);glEnd();}}Thanks for any help   
  // Draw transparent stuff (like critical area highlight)glEnable(GL_BLEND);The glDisable(GL_BLEND) call is missing here.Add that after the glFlush() call and see what happens. ;)Edit: Ah, and you should put your glLineWidth() / glBegin(GL_LINES) / glEnd() calls outside the loop (at least the inner one).   ;Quote:Original post by Lord_Evil// Draw transparent stuff (like critical area highlight)glEnable(GL_BLEND);The glDisable(GL_BLEND) call is missing here.Add that after the glFlush() call and see what happens. ;)Where exactly the glDisable call is missing? I've tried adding it before drawing my lines but the effect doesn't change. Also tried adding it just before the glPopMatrix() but still the same :/Quote:Edit: Ah, and you should put your glLineWidth() / glBegin(GL_LINES) / glEnd() calls outside the loop (at least the inner one).Agreed. Ty for tip   ;  You should add it after the glFlush() call. Also reenable depth testing (glEnable(GL_DEPTH_TEST); ).Assuming the functions you didn't post (like DrawTracks() ) don't change the OpenGL state the relevant part could look like:...glPopMatrix();glFlush(); glDisable(GL_BLEND);glEnable(GL_DEPTH_TEST);...Another source for the problem could be anti-aliasing/super sampling. Does your application turn that on on specific machines? Or do the machines force OpenGL to perform anti-aliasing (look at the OpenGL display settings)?   ;Quote:Original post by Lord_EvilYou should add it after the glFlush() call. Also reenable depth testing (glEnable(GL_DEPTH_TEST); ).It was one of the first thing I thought of, but it didn't work.Quote:Assuming the functions you didn't post (like DrawTracks() ) don't change the OpenGL state They don'tQuote:Another source for the problem could be anti-aliasing/super sampling. Does your application turn that on on specific machines? Or do the machines force OpenGL to perform anti-aliasing (look at the OpenGL display settings)?Neither of them   ;  Possibly you still have textures enabled before drawing the lines.;Quote:Original post by jezhamPossibly you still have textures enabled before drawing the lines.Think I fell in love with you :DAdding glEnable(GL_TEXTURE_2D); after the glPushMatrix() and glDisable(GL_TEXTURE_2D); just before the popMatrix() fixed the problem on my laptop.Still doesn't explain why it worked on the other PCs, tho i guess it's due to different implementations of OpenGL in the driversThanks!   ;  No need for glFlushhttp://www.opengl.org/wiki/index.php/Common_Mistakes#glFinish_and_glFlush;Quote:Original post by SimeThink I fell in love with you :DAdding glEnable(GL_TEXTURE_2D); after the glPushMatrix() and glDisable(GL_TEXTURE_2D); just before the popMatrix() fixed the problem on my laptop.Still doesn't explain why it worked on the other PCs, tho i guess it's due to different implementations of OpenGL in the driversThanks!Feeling the love :)I guess the other PCs had anti aliasing or anisotropic filtering.  Your (textured) line had no tex-coords supplied, and the filters were mixing colours from around the lower-left (plus wrapping) of the previous bound texture.;  Thanks for all the tips :)   