opengl中的对象旋转没有发生
rotation of an object in opengl not happening
我正在努力解决 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();
}
不得在 glBegin 和 glEnd 之间调用 glRotate。说到 glEnd:你的代码缺少这个(即你没有正确关闭 glBegin/glEnd 块)。
您必须在绘制内容之前(而不是之后)将旋转应用于变换矩阵:OpenGL 是一种绘图 API。它一次只绘制 个点、线和三角形。没有场景,也没有可以在绘制后旋转的模型。
已解决
而不是 angle+=90;
使用 angle=90
我正在努力解决 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();
}
不得在 glBegin 和 glEnd 之间调用 glRotate。说到 glEnd:你的代码缺少这个(即你没有正确关闭 glBegin/glEnd 块)。
您必须在绘制内容之前(而不是之后)将旋转应用于变换矩阵:OpenGL 是一种绘图 API。它一次只绘制 个点、线和三角形。没有场景,也没有可以在绘制后旋转的模型。
已解决
而不是 angle+=90;
使用 angle=90