编写一个基于OpenGL的程序,绘制一个三角形,并分别绘制这个三角形经旋转、平移、缩放后的结果
主要用到的有三个函数:
1、Translatef(); 用于图形平移
2、glRotatef(); 用于图形旋转
3、glScalef(); 用于图形的缩放
下图是程序运行的结果:
下面是该程序的代码:
#include "stdafx.h"
#include <GL\glut.h>
//初始化窗口
void Initial(void)
{
//设置窗口背景颜色为白色
glClearColor(1.0f, 1.0f, 1.0f, 1.0f);
}
//绘制三角形
void DrawTriangle()
{
glBegin(GL_TRIANGLES);
glVertex2f(0.0f, 0.0f);
glVertex2f(40.0f, 0.0f);
glVertex2f(20.0f, 40.0f);
glEnd();
}
void Display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
//绘制黑色的坐标轴
glBegin(GL_LINES);
glColor3f(0, 0, 0);
glVertex2f(-400, 0);
glColor3f(0, 0, 0);
glVertex2f(400, 0);
glColor3f(0, 0, 0);
glVertex2f(0, 400);
glColor3f(0, 0, 0);
glVertex2f(0, -400);
glEnd();
//画出初始的红色三角形
glColor3f(1, 0, 0);
DrawTriangle();
//画出逆时针旋转200度角的绿色三角形
glPushMatrix();
glRotatef(200, 0, 0, 10);
glColor3f(0, 1.0, 0);
DrawTriangle();
glPopMatrix();
//画出延X轴负向平移40的黄色三角形
glPushMatrix();
glTranslatef(-80, 0, 0);
glColor3f(1, 1.0, 0);
DrawTriangle();
glPopMatrix();
//画出延X轴对称、延X轴正向平移10、Y轴负向平移10缩放因子为1.5,2.0,1.0的蓝色三角形
glPushMatrix();
glTranslatef(10, -10, 0);
glRotatef(180, 10, 0, 0);
glScalef(1.5, 2.0, 1.0);
glColor3f(0, 0, 1);
DrawTriangle();
glPopMatrix();
glFlush();
}
int main(int argc, char *argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition(100, 100);
glutInitWindowSize(400, 400);
glutCreateWindow("变换实例");
glutReshapeFunc(ChangeSize);
glutDisplayFunc(Display);
Initial();
glutMainLoop();
return 0;
}
使用了代码,记得点个“赞”。