在opengl(2D)中旋转星形
我有一个2D星形,我不知道如何围绕它的中心旋转,我也不知道如何用键盘键来做。还有,我如何使我的对象按一定的百分比变大或变小(因为当我试图通过改变像素来做这件事时,星星会出错) 这是我的代码:在opengl(2D)中旋转星形,opengl,rotation,Opengl,Rotation,我有一个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(
#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;
}
#包括
#包括
#包括
void init(void)
{
glClearColor(0.0,0.0,0.0,00);
glMatrixMode(GL_投影);
gluOrtho2D(0.0200.0,0.0200.0);
}
空心线段(空心)
{
glClear(GLU颜色缓冲位);
GL3F(1.0,1.0,1.0);
glBegin(GL_线_环);
glVertex2i(20120);
glVertex2i(180120);
glVertex2i(45,20);
glVertex2i(100190);
glVertex2i(155,20);
格伦德();
glFlush();
}
int main(int argc,字符**argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
位置(50100);
“星型”;
init();
glutDisplayFunc(线段);
glutMainLoop();
返回0;
}
如果使用glRotatef()函数绕z轴旋转恒星,它应该绕其中心旋转。我将创建一个全局变量来测量旋转,并使用您想要使用的任何关键点来增加或减少该值。
因此,glRotatef(角度,0.0f,0.0f,1.0f);我们应该做到这一点。
查看NeHe教程,我发现它们特别有帮助:
检查1-10之间的必要参数,键盘控制和旋转等有一些参数
此外,为了缩放它,您也可以尝试glScalef(),并进行数学运算,以百分比的形式递增它,这并不难
希望其中一些是有用的,对于旋转,我对所有这些都很陌生,有几种方法可以做到这一点-旋转对象的顶点或旋转它所在的坐标空间。你知道有什么OpenGL例程可以帮助旋转吗?没有,我是OpenGL的新手,我想用一个键把它旋转一圈,用另一个键使星星变大或变小Hanks Talen但是我是OpenGL的新手,我不知道如何在我的代码中使用它们哈哈,不用为你做太多的家庭作业:P,我建议看一下这两页:这两页解释函数及其参数,了解它们是非常宝贵的。此外,在NeHe网站上,课程向您展示了如何在不影响任何其他模型的情况下使用它们。我强烈推荐OpenGL的这些课程,它们非常精彩,而且非常简单:)