c - opengl中物体的旋转没有发生

标签 c opengl visual-studio-2008 rotation

我正在努力解决 opengl 中对象的旋转问题

按向左箭头键时,它应该旋转 90 度。 但它不是按该顺序旋转,而是随机旋转,没有任何顺序。

另请检查重新显示功能是否正确使用

#include<stdlib.h>
#include<glut.h>
#include<stdio.h>

#include<math.h>
#include<time.h>
int angle=0;


void display()
{
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glColor3f(1.0,0.0,0.0);
glBegin(GL_POLYGON);
                glVertex2i(100,50);
                glVertex2i(300,50);
                glVertex2i(300,150);
                glVertex2i(100,150);
                glEnd();
glRotatef(angle,0.0,0.0,1.0);
glutSwapBuffers();
glFlush();

}
void init()
{
    glClearColor(1.0,1.0,1.0,1.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glOrtho(-400,400,-400,400,-1,1);

}


void Keys(int key,int x,int y){
if(key==GLUT_KEY_LEFT)
    {    angle+=90;
    if(angle>360)
        angle-=360;

    }

   glutPostRedisplay();
}


void main(int argc,char**argv)
{
    glutInit(&argc,argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB|GLUT_DEPTH);
    glutInitWindowSize(700,700);
    glutCreateWindow("tetris");

    glutDisplayFunc(display);

    glutSpecialFunc(Keys);
    init();
    glutMainLoop();
}

最佳答案

已解决

使用angle=90代替angle+=90;

关于c - opengl中物体的旋转没有发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36373702/

相关文章:

c - UDP socket - C编程 绑定(bind)和广播

c - gdb : address range mappings

c++ - QGLWidget::renderText 边界框

c++ - 如何正确地将 OpenGL 代码添加到外部函数中

c# - 如何在 C#(VS 2008) 中以编程方式添加上下文菜单?

visual-studio-2008 - 调试命令(step over/into)导致未处理的异常

c - 在 C 中写入串口适配器

c - void* 类型转换打破了严格的别名?

opengl - 如何使用 glm::cross 的右手定则?

c# - system.outofmemoryexception 填充DataAdapter时?