综述
没有任何技术含量,只是做一个备份。方便自己查阅。
代码
#include <GLUT/GLUT.h>
#include <iostream>
#include <string>
#include <vector>
#include <iomanip>
#include <fstream>
using namespace std;
ofstream outfile;
string path = "/Users/frankdura/Desktop/myfile.txt";
struct Point{
//定义点的结构体,主要用于编码
float x,y;
int code;
};
vector<float> con_x,con_y;
vector<float> con_x2,con_y2;
int window_size=600; //这是我们显示界面的大小
void InitEnvironment()
{
//一些初始化操作
glClearColor(0.0,0.0,0.0,0);
glClear(GL_COLOR_BUFFER_BIT);
glPointSize(4);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluOrtho2D(0,window_size,0,window_size);
}
void drawpoints(float x, float y,int red,int blue,int green){
glColor3f(red,blue,green);
glBegin(GL_POINTS);
glVertex2f(x, window_size-y);
cout << x << " " << y<< endl;
glEnd();
glFlush();
}
void init_Display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
// 首先绘制裁剪区域
glColor3f(0.98f, 0.625f, 0.12f);
//刷新队列
//在内部,openGL的命令和语句常常等待在队列里
//直到openGL驱动程序同时处理几个“命令”
glFlush();
for (int i = 0; i < con_x.size() ; ++i) {
// cout << con_x[i] <<" "<<con_y[i] << endl;
drawpoints(con_x2[i],con_y2[i],1,0,1);
}
for (int i = 0; i < con_x.size() ; ++i) {
// cout << con_x[i] <<" "<<con_y[i] << endl;
drawpoints(con_x[i],con_y[i],1,1,0);
}
}
void OnMouse(int button,int state,int x,int y)
{
// if(button==GLUT_LEFT_BUTTON&&state==GLUT_DOWN)
// {
// glColor3f(1,0,0);
// glBegin(GL_POINTS);
// glVertex2f(x, window_size-y);
// cout << x << " " << y<< endl;
// glEnd();
// glFlush();
// }
}
int main(int argc, char *argv[])
{
cout << "begin!"<<endl;
float x,y;
while(cin>>x>> y && x!=0){
con_x.push_back(x);
con_y.push_back(y);
}
cout << "read!" << con_x.size() << endl;
while(cin>>x >> y&&x!=0){
con_x2.push_back(x);
con_y2.push_back(y);
}
cout << "read2!over" << endl;
glutInit(&argc, argv); //初始化GLUT
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(300, 100);
glutInitWindowSize(window_size, window_size);
glutCreateWindow("show_point");
InitEnvironment(); //初始化
glutMouseFunc(&OnMouse); //注册鼠标事件
glutDisplayFunc(&init_Display); //回调函数
glutMainLoop(); //持续显示,当窗口改变会重新绘制图形
return 0;
}