По поводу прозрачности я знаю один момент. Даже если картинка не имеет прозрачность, можно указать glColor(r,g,b,A);
glColor(1.0f, 1.0f , 1.0f, 1.0f); - это белый цвет, без изменения оригинальной текстуры
A - это альфа, картинка даже если не прозрачная разбивается на так называемую палитру, и если уменьшать альфу у совершенно не прозрачной текстуры, он будет убирать один слой за другим. Попробуй попробовать разные варианты типо 0.9f, или 0.45f. И ты заметишь о чём я говорю. Не включай BLEND, когда будешь тестировать.