我有一个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(),并进行数学运算,将其递增为一个百分比,这不会太难。
希望其中的一些有用,我对这一切都很陌生>。>