void GLSingleView::effectBlend() { if (m_i > 100) { paintTexture(); m_effectRunning = false; m_tmout = -1; return; } int a = (m_curr == 0) ? 1 : 0; int b = m_curr; TexItem& ta = m_texItem[a]; TexItem& tb = m_texItem[b]; glMatrixMode(GL_TEXTURE); glLoadIdentity(); glRotatef(ta.angle, 0.0, 0.0, 1.0); glBindTexture(GL_TEXTURE_2D, ta.tex); glBegin(GL_QUADS); { glColor4f(1.0, 1.0, 1.0, 1.0); glTexCoord2f(0, 0); glVertex3f(-ta.cx, -ta.cy, 0); glTexCoord2f(1, 0); glVertex3f(ta.cx, -ta.cy, 0); glTexCoord2f(1, 1); glVertex3f(ta.cx, ta.cy, 0); glTexCoord2f(0, 1); glVertex3f(-ta.cx, ta.cy, 0); } glEnd(); glBegin(GL_QUADS); { glColor4f(0.0, 0.0, 0.0, 1.0/(100.0)*(float)m_i); glVertex3f(-1, -1, 0); glVertex3f(1, -1, 0); glVertex3f(1, 1, 0); glVertex3f(-1, 1, 0); } glEnd(); glMatrixMode(GL_TEXTURE); glLoadIdentity(); glRotatef(tb.angle, 0.0, 0.0, 1.0); glBindTexture(GL_TEXTURE_2D, tb.tex); glBegin(GL_QUADS); { glColor4f(1.0, 1.0, 1.0, 1.0/(100.0)*(float)m_i); glTexCoord2f(0, 0); glVertex3f(-tb.cx, -tb.cy, 0); glTexCoord2f(1, 0); glVertex3f(tb.cx, -tb.cy, 0); glTexCoord2f(1, 1); glVertex3f(tb.cx, tb.cy, 0); glTexCoord2f(0, 1); glVertex3f(-tb.cx, tb.cy, 0); } glEnd(); m_i++; }