Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在opengl(2D)中旋转星形_Opengl_Rotation - Fatal编程技术网

在opengl(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(

我有一个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;
}
#包括
#包括
#包括
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的这些课程,它们非常精彩,而且非常简单:)