我在VC ++中有两行
glBegin(GL_LINES);
//1st line
glVertex2d(20, 20);
glVertex2d(20, 80);
//2nd line to be scaled
glScaled(2,2,2);
glVertex2d(50, 20);
glVertex2d(50, 80);
glEnd();
我希望使用glScaled(2,2,2)
将第二行的长度加倍。如何在VC ++中使用openGL来实现它。
答案 0 :(得分:3)
您不应更改glBegin()
和glEnd()
之间的矩阵。该块只是用于指定顶点数据。
glBegin(GL_LINES);
//1st line
glVertex2d(20, 20);
glVertex2d(20, 80);
glEnd();
glPushMatrix();
glScaled(2,2,2);
glBegin(GL_LINES);
//2nd line to be scaled
glVertex2d(50, 20);
glVertex2d(50, 80);
glEnd();
glPopMatrix(); //used to restore the unscaled matrix
请注意,整行都是缩放的(起点和终点)。如果您只想以起点为原点进行缩放,则可以按如下方式调整变换:
glTranslated(50, 20, 0);
glScaled(2,2,2);
glTranslated(-50, -20, 0);
或者简单地说:
glTranslated(50, 20, 0);
glScaled(2,2,2);
//...
glVertex2d(0, 0);
glVertex2d(0, 60);