opengl使用效用函数进行翻译

时间:2013-03-15 06:31:28

标签: opengl translate

这是我用于翻译点的效用函数:

void translatePoints(float x, float y, int transX, int transY)
{
    glMatrixMode(GL_MODELVIEW);
    //glLoadIdentity();
    glBegin(GL_LINES);
    // original points
    glVertex2f(x,y);    
    glVertex2f(x + transX, y + transY);
    glEnd();
    glFlush();
}

我有类似的功能,用于绘制圆,缩放点和旋转点 在不使用矩阵转换的情况下,我必须从myDisplay传递x和y值,并使形状平移并从中心缩放和旋转。 如果我有一个有6个点的形状,就像一个星星,这个功能不起作用。   我想这个功能可以工作,它必须返回两个点,否则我可以使用指针。但我不确定如何实现其中任何一个,我也相信我不应该在这个功能中提出这些要点。 最后,我必须绘制一个不同形状的场景。

2 个答案:

答案 0 :(得分:1)

我认为你想要的是

glVertex2f(x + transX, y + transY);
glVertex2f(a + transX, b + transY);

你的线从(x,y)到(a,b)。你是从你的原始点到你翻译的原始点画一条线,而不是翻译这两点。

希望我能正确解释你的问题

答案 1 :(得分:1)

我理解你的问题,我试着在这里解释一下。 例如,让我们使用四点绘制2D正方形。制作一个可维护的,其中包含绘制正方形的共同值,假设变量名称如下所示

x1, y1, z
x2, y2, z
x3, y3, z
x4, y4, z

这里z坐标是固定的。现在,如果你想创建一个函数来翻译正方形,那么就像这样实现你的函数。

void translateSquare(int transX, int transY)
{
  x1 + transX; y1 + transY;
  x2 + transX; y2 + transY;
  x3 + transX; y3 + transY;
  x4 + transX; y4 + transY;
}

当您调用此函数时,您的方块将按值transX和transY进行转换。因此,为您的显示器制作类似于此的功能。