2012-07-09 53 views
0

我有一个2D明星,我不知道如何将它围绕中心旋转,而且我也不知道如何使用键盘按键。另外我怎样才能让我的物体变大或变小一定比例(因为当我试图通过改变像素来实现时,星星出现问题)。在opengl中旋转一个明星(2D)

这是我的代码:

#include <GL/glut.h> 
#include <GL/gl.h> 
#include <GL/freeglut.h> 

void init (void) 
{ 
    glClearColor(0.0,0.0,0.0,00); 
    glMatrixMode(GL_PROJECTION); 
    gluOrtho2D(0.0,200.0,0.0,200.0); 

} 
void LineSegment(void) 
{ 
    glClear(GL_COLOR_BUFFER_BIT); 
    glColor3f(1.0,1.0,1.0); 
    glBegin(GL_LINE_LOOP); 
    glVertex2i(20,120); 
    glVertex2i(180,120); 
    glVertex2i(45,20); 
    glVertex2i(100,190); 
    glVertex2i(155,20); 
    glEnd(); 
    glFlush(); 
} 
int main(int argc,char** argv) 
{ 
    glutInit(&argc,argv); 
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); 
    glutInitWindowPosition(50,100); 
    glutCreateWindow("STAR"); 
    init(); 
    glutDisplayFunc(LineSegment); 
    glutMainLoop(); 
    return 0; 
} 
+0

对于旋转,有几种方法可以做到这一点 - 旋转对象的顶点或旋转,它的坐标空间存在于。你知道任何有助于旋转的OpenGL例程吗? – user1118321 2012-07-10 04:23:27

+0

没有即时通讯新的OpenGL,我想旋转它与一个关键的圆周围,并与另一个关键使STAR更大或更小 – 2012-07-10 07:41:22

回答

2

如果旋转与glRotatef恒星绕Z轴()函数,它应该不停地旋转它的中心。我会创建一个全局变量来测量旋转,并使用您想要使用的任何键来增加该值。 glRotatef(angle,0.0f,0.0f,1.0f);应该做的伎俩。 退房讷河教程,他们是特别有用为了这个,我发现: http://nehe.gamedev.net/

退房1-10之间的必要的,有关于键盘控制和旋转和这样一些。

此外,为了扩展它,你也可以尝试glScalef(),并做数学增加它作为一个百分比不会太难。 。

希望一些认为是有用的,我很新的这一切>>

+0

谢谢Talen但即时新的OpenGL和我不知道如何使用它们在我的代码 – 2012-07-10 07:43:26

+0

哈哈没有做你的作业太多了:P, 我建议看看这两页: http://www.opengl.org/sdk/docs/man/xhtml/glRotate.xml http:// www.opengl.org/sdk/docs/man/xhtml/glScale.xml 这些页面解释了函数及其参数,对这些函数的理解是非常宝贵的。此外,在NeHe网站上,课程将向您展示如何在不影响任何其他模型的情况下使用它们。我强烈推荐OpenGL的这些课程,他们非常聪明,非常简单,可以遵循:) – 2012-07-10 07:51:20