Try to use glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); but we need to know more info about the current state of OpenGL ( more of your code ), and if you has loaded the textures on memory, placed the texture coordinates and texture binding.
–
mombocoMar 27 '11 at 0:54

Review that your code is exactly the same. Put extreme caution in the identation. If copy and past the code below, convert the spaces into tab. If you try this and have a problem you can write a comment.

example2a works perfectly, this is not my problem. if you add some glcolor4f(1,1,1,1);glBegin(TRIANGLES); and draw some random triangles.. this does not work.
–
nkintMar 27 '11 at 17:47

I've edited my answer. The main loop of main function draws a triangle. Look at the lines with comments.
–
mombocoMar 27 '11 at 18:27

what's the hell! why has textures to be disabled??
–
nkintMar 27 '11 at 21:59

The primitives that you draw are affected by the current state of OpenGL, think that OpenGL is a large state machine. If the next primitive to draw doesn't have textures, ensure that the GL_TEXTURE_2D is disabled because there may be things that affect to painting when the texture state is enabled.
–
mombocoMar 27 '11 at 22:24

OpenGL is a state machine, whenever you set it to a state you need to revert that state after you've used it. You have set current texture to be "texture", once you've called the list you need to restore the 0 texture (no texture state).

Textures aren't stored with display lists, so there's no need to bind them when making lists.

The reason why you had your polygons invisible most probably is that your texture is black/transparent at 0;0 coordinates. And when you draw your polygons they had been using 0;0 texture coords (default).