详解一个基于C OpenGL的图形绘制的编程例子
时间: 2023-06-02 07:03:47 浏览: 74
好的,以下就是一个基于C OpenGL的图形绘制的编程例子:
#include <GL/glut.h>
void init()
{
glClearColor(0.0, 0.0, 0.0, 0.0); // 设置背景颜色为黑色
glMatrixMode(GL_PROJECTION); // 切换到投影矩阵模式
glLoadIdentity(); // 重置当前矩阵为单位矩阵
gluOrtho2D(0.0, 640.0, 0.0, 480.0); // 定义二维正交投影矩阵
}
void display()
{
glClear(GL_COLOR_BUFFER_BIT); // 清除帧缓存
glColor3f(1.0, 1.0, 1.0); // 设置当前颜色为白色
glBegin(GL_TRIANGLES); // 开始绘制三角形
glVertex2i(320, 50); // 设置顶点1
glVertex2i(220, 400); // 设置顶点2
glVertex2i(420, 400); // 设置顶点3
glEnd(); // 结束绘制三角形
glFlush(); // 强制刷新帧缓存
}
int main(int argc, char** argv)
{
glutInit(&argc, argv); // 初始化OpenGL窗口系统
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // 设置显示模式
glutInitWindowSize(640, 480); // 设置窗口大小
glutInitWindowPosition(100, 100); // 设置窗口位置
glutCreateWindow("OpenGL Example"); // 创建窗口
init(); // 初始化OpenGL上下文环境
glutDisplayFunc(display); // 注册绘制回调函数
glutMainLoop(); // 进入循环处理消息
return 0;
}
这个例子使用OpenGL的基本函数库来绘制一个三角形,首先通过glClearColor()函数设置背景颜色为黑色,然后通过glMatrixMode()函数切换到投影矩阵模式,再通过glLoadIdentity()函数重置矩阵为单位矩阵,并使用gluOrtho2D()函数定义一个二维正交投影矩阵,接着在display()函数中使用glClear()函数清除帧缓存,glColor3f()函数设置当前颜色为白色,glBegin()函数开始绘制三角形,glVertex2i()函数设置顶点坐标,最后使用glEnd()函数结束绘制三角形,glFlush()函数强制刷新帧缓存,最后在main()函数中通过glutInit()函数初始化OpenGL窗口系统,通过glutInitDisplayMode()函数设置显示模式,通过glutInitWindowSize()函数设置窗口大小,通过glutInitWindowPosition()函数设置窗口位置,通过glutCreateWindow()函数创建窗口,通过init()函数初始化OpenGL上下文环境,通过glutDisplayFunc()函数注册绘制回调函数,最后通过glutMainLoop()函数进入消息循环处理。