在opengl(2D)中旋转一颗恒星



我有一个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;
}

如果使用glRotatef()函数绕z轴旋转恒星,它应该绕其中心旋转。我会创建一个全局变量来测量旋转,并使用您想要使用的任何键来增加或减少该值。因此,glRotatef(角度,0.0f、0.0f、1.0f);应该做到这一点。查看NeHe教程,我发现它们对此特别有用:http://nehe.gamedev.net/

看看1-10之间的必要选项,还有一些关于键盘控制和旋转之类的。

此外,为了缩放它,你也可以尝试glScalef(),并进行数学运算,将其递增为一个百分比,这不会太难。

希望其中的一些有用,我对这一切都很陌生>。>

最新更新