У меня проблема с glViewport.В моей программе liitle у меня есть два окна просмотра.Я могу нарисовать форму (с помощью motionfunc) в одном из этих видов, а в другом автоматически рисуется линия.Пока все хорошо .. Когда я пытаюсь что-то нарисовать с помощью mousefunc, окно просмотра находится в совершенно другом месте.И очень трудно найти новые правильные координаты для этого окна просмотра.Есть ли возможность сбросить координаты .. Я не могу использовать glLoadIdentity в мыши или движении, потому что тогда ничего не отображается.
Надеюсь, вы понимаете, о чем я.Это немного сложно объяснить.
ОК, здесь кодовый код ....
void mouse (int button, int state, int mx, int my)
{
if (modus == 0 && button==GLUT_LEFT_BUTTON && state != GLUT_DOWN)
{
...
}
else if (modus == 1 && button==GLUT_LEFT_BUTTON && state == GLUT_DOWN)
{
**glViewport(10,10 , sw_w1, sw_h1);**
//the drawing is much higher than in the first viewport in motion.
//But it should be the same viewport like the first in motion.
glBegin()...glEnd()
glFlush();
}
}
void motion(int mousex,int mousey)
{
GLdouble h=12;
GLdouble winkel=360/h;
Line liste[num];
liste[++last].x =(mousex)-((sw_w1+2*GAP)/2);
liste[last].y =(mousey)-((sw_h1+2*GAP)/2);
if (modus==0 && gruppe == 0) {
if (last>=1)
{
glViewport(10, 10, sw_w1, sw_h1); //works fine
glColor3d(R, G, B);
for(h+1;h>0;h--){
glRotated(winkel, 0, 0, 1);
glBegin(GL_LINE_STRIP);
for(int i=last-1;i<=last;i++){
glVertex2i(liste[i].x,liste[i].y);
}
glEnd();
}
glLineWidth(linewidth+0.5);
glColor3f(1, 0, 0);
glBegin(GL_LINE_STRIP);
for(int i=last-1;i<=last;i++){
glVertex2i(liste[i].x,liste[i].y);
}
glEnd();
glViewport(1020,10 , sw_w2, sw_h2); //works fine
glColor3f(1, 0, 0);
glBegin(GL_LINE_STRIP);
for(int i=last-1;i<=last;i++){
glVertex2i(liste[i].x,liste[i].y);
}
glEnd();
}
glFlush();
}
}
Второй и третий видовой экран работает нормально.Первый такой же, как второй, но картинка отображается гораздо выше. Почему так?И как я мог изменить это так, чтобы я получил тот же самый видовой экран как второй.Надеюсь, теперь вы понимаете, о чем я.