使用OpenGL C++语言,橡皮筋技术/交互式绘制三角形
完整代码见最后
大部分理解都写在代码注释里面了,有疑问可以直接评论区问UP。
说在前面
之前在网上参考了很多类似的代码,他们都有庞大的头文件,个别代码还引用了C++的万能头文件(这玩意在VS2019中不能直接运行,还需要配置),但最后我发现,如果只是想画个交互式三角形,其实就需要一个gl包即可。
不废话了,直接贴完整代码
#include <gl/glut.h>
#include <stdio.h>
#define NUM 3 //设置顶点数量
int alreadyFirstPoint = 0; //标记是否已经开始绘制折线
int winWidth = 800, winHeight = 600;
int Mousex, Mousey; //当前鼠标的位置
int n = 0; //记录折线数量
struct LineNode {//定义一条线,包含两个点,四个数据
int x1;
int y1;
int x2;
int y2;
}Line[NUM];
void Initial(void)//非逻辑代码,初始化
{
glClearColor(1.0f, 1.0f, 1.0f, 1.0f); //设置窗口颜色
}
void ChangeSize(int w, int h)//非逻辑代码,控制窗口size
{
winWidth = w;
winHeight = h;
glViewport(0, 0, w, h); //指定窗口显示区域
glMatrixMode(GL_PROJECTION); //指定设置投影参数
glLoadIdentity(); //调用单位矩阵,去掉以前的投影