| | 722 | void GLSingleView::effectZoomBlend() |
| | 723 | { |
| | 724 | if (m_i > 100) { |
| | 725 | paintTexture(); |
| | 726 | m_effectRunning = false; |
| | 727 | m_tmout = -1; |
| | 728 | return; |
| | 729 | } |
| | 730 | |
| | 731 | int a = (m_curr == 0) ? 1 : 0; |
| | 732 | int b = m_curr; |
| | 733 | float zf = 0.75; |
| | 734 | |
| | 735 | TexItem& ta = m_texItem[a]; |
| | 736 | TexItem& tb = m_texItem[b]; |
| | 737 | |
| | 738 | glMatrixMode(GL_TEXTURE); |
| | 739 | glLoadIdentity(); |
| | 740 | glRotatef(ta.angle, 0.0, 0.0, 1.0); |
| | 741 | float t=1.0/(100.00)*(float)m_i; |
| | 742 | glBindTexture(GL_TEXTURE_2D, ta.tex); |
| | 743 | glBegin(GL_QUADS); |
| | 744 | { |
| | 745 | glColor4f(1.0, 1.0, 1.0, 1.0-t); |
| | 746 | glTexCoord2f(0, 0); |
| | 747 | glVertex3f(-ta.cx*(1.0+zf*t), -ta.cy*(1.0+zf*t), 0); |
| | 748 | |
| | 749 | glTexCoord2f(1, 0); |
| | 750 | glVertex3f(ta.cx*(1.0+zf*t), -ta.cy*(1.0+zf*t), 0); |
| | 751 | |
| | 752 | glTexCoord2f(1, 1); |
| | 753 | glVertex3f(ta.cx*(1.0+zf*t), ta.cy*(1.0+zf*t), 0); |
| | 754 | |
| | 755 | glTexCoord2f(0, 1); |
| | 756 | glVertex3f(-ta.cx*(1.0+zf*t), ta.cy*(1.0+zf*t), 0); |
| | 757 | } |
| | 758 | glEnd(); |
| | 759 | |
| | 760 | glMatrixMode(GL_TEXTURE); |
| | 761 | glLoadIdentity(); |
| | 762 | glRotatef(tb.angle, 0.0, 0.0, 1.0); |
| | 763 | |
| | 764 | glBindTexture(GL_TEXTURE_2D, tb.tex); |
| | 765 | glBegin(GL_QUADS); |
| | 766 | { |
| | 767 | glColor4f(1.0, 1.0, 1.0, 1.0/(100.0)*(float)m_i); |
| | 768 | glTexCoord2f(0, 0); |
| | 769 | glVertex3f(-tb.cx, -tb.cy, 0); |
| | 770 | |
| | 771 | glTexCoord2f(1, 0); |
| | 772 | glVertex3f(tb.cx, -tb.cy, 0); |
| | 773 | |
| | 774 | glTexCoord2f(1, 1); |
| | 775 | glVertex3f(tb.cx, tb.cy, 0); |
| | 776 | |
| | 777 | glTexCoord2f(0, 1); |
| | 778 | glVertex3f(-tb.cx, tb.cy, 0); |
| | 779 | } |
| | 780 | glEnd(); |
| | 781 | |
| | 782 | m_i++; |
| | 783 | } |
| | 784 | |