在OpenGL中缩放行

时间:2014-08-09 17:18:41

标签: opengl visual-c++

我在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来实现它。

1 个答案:

答案 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);