У меня проблема с glViewport. В моей программе liitle у меня есть два видовых экрана. Я могу нарисовать форму (с motionfunc) в одном из этих видовых экранов, а в другом - автоматически. До сих пор так хорошо .. Когда я пытаюсь нарисовать что-то с помощью mousefunc, окно просмотра находится в совершенно другом месте. И очень сложно найти новые правильные координаты для этого окна просмотра. Есть ли возможность сбросить координаты. Я не могу использовать glLoadIdentity для мыши или движения, потому что тогда ничего не отображается.OpenGL glViewport() (сброс координат)
Надеюсь, вы понимаете, что я имею в виду. Это немного сложно объяснить.
OK здесь codesnippet ....
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();
}
}
Второй и третий видовой экран работает отлично. Первый - тот же, что и второй, но изображение отображается намного выше. Почему это так? И как я могу изменить его, чтобы получить тот же видоискатель, что и второй. Надеюсь, теперь вы поймете, что я имею в виду.
Я не понимаю –
Может быть, вам следует опубликовать какой-то код, чтобы уточнить, что вы хотите сделать, поскольку ваши дескрипции не очень, но и описательны. –
Наверху вы видите мои изменения в моем вопросе. – buddy