矩形,三角形,三菱锥的绘制
- 首次接触OpenGL,发现它作为一个规格的专业的图形程序接口,学会使用它对自己有很大帮助。
- 前期自学看书,边敲边思考,有一定的c语言基础,发现可以很快理解。
(一)、矩形
#include<windows.h>
#define GLUT_DISABLE_ATEXIT_HACK
#include<gl/glut.h>
#include<gl/gl.h>
#include<gl/glu.h>
void RenderScene()//用于在窗口中绘制需要的图形
{
glClear(GL_COLOR_BUFFER_BIT);//用当前清除色清除颜色缓冲区,即设定窗口的背景色
glColor3f(1.0f,0.0f,0.0f);//设置当前绘图使用的RGB颜色
glRectf(0.0f,40.0f,40.0f,0.0f);//使用当前颜色绘制一个填充的矩形,四个参数表示矩形左上角点和右下角点的坐标
glFlush();//刷新OpenGL命令队列
}
//是窗口大小改变时调用的登记函数
void ChangeSize(int w,int h)
{
if(h==0) h=1;
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w<=h)
glOrtho(-100.0f,100.0f,-100.0f*h/w,100.0f*h/w,-100.0f,100.0f);
else
glOrtho(-100.0f*w/h,-100.0f*w/h,-100.0f,100.0f,-100.0f,100.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void SetupRC()//用于初始化,常用来设置场景渲染状态
{
glClearColor(1.0f,1.0f,1.0f,1.0f);//设置窗口的清除色为白色
}
void main()
{
//初始化GLUT库OpenGL窗口的显示模式
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutCreateWindow("GLRect");//创建一个名为GLRect的窗口
//设置当前窗口的显示回调函数和窗口再整形回调函数
glutReshapeFunc(ChangeSize);
glutDisplayFunc(RenderScene);
SetupRC();
//启动主GLUT事件处理循环
glutMainLoop();
}
运行结果如图
(二)、三角形
#include<windows.h>
#define GLUT_DISABLE_ATEXIT_HACK
#include<gl/gl.h>
#include<gl/glut.h>
//旋转参数
static GLfloat xRot=0.0f;
static GLfloat yRot=0.0f;
//确定多边形绕法的方向
BOOL bWinding=TRUE;
//初始化窗口
void