OpenGL 2D 旋转问题
在下面的程序中,我试图画一个简单的房子。坐标在 house 数组中定义。我需要旋转房子并显示旋转后的房子和原始房子。 但为什么旋转后的房子没有显示出来呢?
//Program to create a house like figure and rotate ir about a given fixed point using OpenGL functions.
#include <glut.h>
#include <stdio.h>
float house [11][2] = {{100,200},{200,250},{300,200},{100,200},{100,100},{175,100},{175,150},{225,150},{225,100},{300,100},{300,200}};
void init()
{
glClearColor(1,1,1,0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0,800,0,800);
glMatrixMode(GL_MODELVIEW);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
//NORMAL HOUSE
glColor3f(1,0,0);
glBegin(GL_LINE_LOOP);
for(int i=0;i<11;i++)
glVertex2fv(house[i]);
glEnd();
glFlush();
//ROTATED HOUSE
glPushMatrix();
glRotatef(60,0,1,0);
glColor3f(1,1,0);
glBegin(GL_LINE_LOOP);
for(int i=0;i<11;i++)
glVertex2fv(house[i]);
glEnd();
glFlush();
glPopMatrix();
}
void main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(800,800);
glutInitWindowPosition(100,100);
glutCreateWindow("House rotation");
init();
glutDisplayFunc(display);
glutMainLoop();
}
In the following program i am trying to draw a simple house. The coordinates are defined in the house array. I need to rotate the house and display both rotated as well as the original house.
But why is the rotated house not being displayed?
//Program to create a house like figure and rotate ir about a given fixed point using OpenGL functions.
#include <glut.h>
#include <stdio.h>
float house [11][2] = {{100,200},{200,250},{300,200},{100,200},{100,100},{175,100},{175,150},{225,150},{225,100},{300,100},{300,200}};
void init()
{
glClearColor(1,1,1,0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0,800,0,800);
glMatrixMode(GL_MODELVIEW);
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
//NORMAL HOUSE
glColor3f(1,0,0);
glBegin(GL_LINE_LOOP);
for(int i=0;i<11;i++)
glVertex2fv(house[i]);
glEnd();
glFlush();
//ROTATED HOUSE
glPushMatrix();
glRotatef(60,0,1,0);
glColor3f(1,1,0);
glBegin(GL_LINE_LOOP);
for(int i=0;i<11;i++)
glVertex2fv(house[i]);
glEnd();
glFlush();
glPopMatrix();
}
void main(int argc,char** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(800,800);
glutInitWindowPosition(100,100);
glutCreateWindow("House rotation");
init();
glutDisplayFunc(display);
glutMainLoop();
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试在 Z 轴而不是 Y 轴上旋转:
编辑:这应该绕底角旋转。
Try rotating on the Z axis instead of the Y axis:
EDIT: This one should rotate around the bottom corner.