私はglViewportに問題があります。私のliitleのプログラムでは、私は2つのビューポートを持っています。これらのビューポートの1つにフォーム(モーションファンクション付き)を描画し、もう1つはラインが自動的に描画されます。 これまでのところとても良い.. 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();
}
}
第二と第三ビューポートが正常に動作します。最初のものは2番目のものと同じですが、画像ははるかに高く表示されます。なぜそうですか? そして、私はそれを変更して、2番目のビューポートと同じビューポートを得ることができます。 私はあなたが今何を意味するのか理解してくれることを願っています。
私は –
を理解していませんおそらく、あなたの訴えがそれほどうまく説明的ではないので、あなたがしたいことを明確にするためのコードを投稿するべきでしょう。 –
上に私の質問に私の変更が表示されます。 – buddy