我在OpenGL中绘制了一个简笔画,我有正文(我正在使用GL_LINES
)和头部(我正在使用GL_LINE_LOOP
)。在绘制出来之后,它们都显示出完美的细节。然而,当我在整个屏幕上移动棒图时,头部与身体断开连接。我需要这些才能保持游戏目的。任何人都可以帮我解释一下吗?
如果您还需要我进一步解释,请告诉我。
//Drawing body
glBegin(GL_LINES);
glColor3f(1,1,1);
glVertex2f(xpos, ypos);
glVertex2f(xpos - xdim/2, ypos - ydim);
glVertex2f(xpos, ypos);
glVertex2f(xpos + xdim/2, ypos - ydim);
glVertex2f(xpos, ypos);
glVertex2f(xpos, ypos + ydim);
glVertex2f(xpos - xdim/2, ypos + ydim/2);
glVertex2f(xpos, ypos + ydim);
glVertex2f(xpos - xdim/2, ypos + ydim/2);
glVertex2f(xpos - xdim/4, ypos + ydim/2);
glVertex2f(xpos - xdim/4, ypos + ydim/2);
glVertex2f(xpos - xdim/4, ypos + ydim/3);
glVertex2f(xpos - xdim/4, ypos + ydim/2);
glVertex2f(xpos + xdim, ypos + ydim/2);
glVertex2f(xpos + xdim, ypos + ydim/2);
glVertex2f(xpos + xdim, ypos + ydim/3);
glVertex2f(xpos + xdim, ypos + ydim/2);
glVertex2f(xpos + xdim + xdim/2, ypos + ydim/2);
glVertex2f(xpos + xdim/2, ypos + ydim/2);
glVertex2f(xpos, ypos + ydim);
glVertex2f(xpos, ypos + ydim + ydim/4);
glVertex2f(xpos, ypos + ydim);
glEnd();
//Drawing head
glBegin(GL_LINE_LOOP);
glColor3f(1,1,1);
for (i = 0; i < 100; i++){
j = 2*3.14*i/100;
glVertex2f(200 + 15 * cos(j), 254 + 15 * sin(j));
}
glEnd();
答案 0 :(得分:1)
这很明显:您需要对所有图形部分应用相同的变换,以便将它们组合在一起。
取决于图层次结构:
在您的代码示例中:您似乎使用xpos
/ ypos
来移动正文,但是您不会将它们添加到头部 - 因此它不会移动。