https://wenku.baidu.com/view/28cd5ebfaf1ffc4fff47accf.html 摘自
一安装包:
codeblocks 安装32位版本
glew
freeglut 或者glut
二安装步骤:
1.先安装codeblocks 并且汉化 默认路径
2.glut包 glut.dll glut32.dll 复制到c:\windows\sysWOW64 目录下 (以下用~sysWOW64表示) (动态链接库 存放目录)
glut.h 到MinGW\include\GL (头文件存放目录)
glut.lib glut32.lib 到MinGW\lib
3.freeglut包 可用此步骤替换步骤2
删除GLUT文件从以上目录删除
32位的freeglut.dll 到~sysWOW64\
libfreeglut.a libfreeglut_static.a 到\MinGW\lib\ 下面
freeglut\include\GL\下的头文件, 到MinGW\include\GL
4.glew包 glew32.dll 到~sysWOW64
glew.h 到 MinGW\include\GL
glew32.lib glew32s.lib 到MinGW\lib
三 配置codeblocks
链接库添加 freeglut winmm gdi32 opengl32 顺序不能变
如果使用的freeglut 则添加空项目
四测试代码
#include <GL/glut.h>//导入辅助工具库及其他头文件 #include <stdlib.h> #include <math.h> #include <stdio.h> #include <iostream> using namespace std; //全局变量声明 GLfloat k1 = 1.0f; GLfloat k2 = 1.0f; GLfloat k3 = 1.0f; GLfloat k4 = 1.0f; const GLfloat factor = 0.1f; //函数原型声明 void myDisplay();//回调函数 void mykeys(int key, int x, int y); //主函数入口 int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowPosition(100, 100); glutInitWindowSize(800, 800); glutCreateWindow("OpenGL画多个函数图像"); glutDisplayFunc(&myDisplay); //注册显示回调函数 glutSpecialFunc(&mykeys); //注册特殊按键回调函数 glutMainLoop(); //主消息循环启动 return 0; } //显示函数 void myDisplay(void) { //opengl全局状态变量 GLfloat x; glClear(GL_COLOR_BUFFER_BIT); //清除颜色缓存 glClearColor(1.0, 1.0, 1.0, 1.0); glEnable(GL_LINE_SMOOTH); //坐标轴 glViewport(0, 0, 800, 800); glLineWidth(3); //线宽 glBegin(GL_LINES); //画坐标轴 glColor3f(0.0, 0.0, 0.0); //颜色设置成黑色 glVertex2f(-1, 0.0f); glVertex2f(1, 0.0f); glVertex2f(0.0f, -1); glVertex2f(0.0f, 1); glEnd(); //画余弦函数:f(x)=cos(x) glLineWidth(1); //改变线宽 glBegin(GL_LINE_STRIP); glColor3f(1.0, 0.0, 0.0); for (x = -1.0f / factor; x<1.0f / factor; x += 0.01f) { glVertex2f(x*factor, cos(k3*x)*factor); } glEnd(); //画正弦函数:f(x)=sin(x) glLineWidth(1); glBegin(GL_LINE_STRIP); glColor3f(0.0, 1.0, 0.0); //颜色设置成绿色 for (x = -1.0f / factor; x<1.0f / factor; x += 0.01f) { glVertex2f(x*factor, sin(k1*x)*factor); } glEnd(); //画二次函数:f(x)=x^2 glLineWidth(2); glBegin(GL_LINE_STRIP); glColor3f(0.0, 0.0, 1.0); //颜色设置成蓝色 for (x = -1.0f / factor; x<1.0f / factor; x += 0.01f) { glVertex2f(x*factor, k2*x*x*factor); } glEnd(); //画反比例函数:f(x)=1/x glLineWidth(0.8); glBegin(GL_LINE_STRIP); glColor3f(0.4, 0.0, 0.5); for (x = -1.0f / factor; x<1.0f / factor; x += 0.01f) { glVertex2f(x*factor, 1 / x*factor*k4); } glEnd(); glFlush(); //刷新缓存区 } //键盘控制图形 void mykeys(int key, int x, int y) {/* if (key == GLUT_KEY_UP) //上下方向键控制正弦函数的参数 k1 = 2 * k1; if (key == GLUT_KEY_DOWN) k1 = 0.5f*k1; if (key == GLUT_KEY_RIGHT) //左右方向键控制二次函数的参数 k2 += 0.01; if (key == GLUT_KEY_LEFT) k2 -= 0.01; cout << "函数系数为" << k1 <<"函数表达式为:y=sin("<<k1<<"* x);"<< endl; //实时监测参数值 */ switch(key)//上下控制正弦;左右控制二次函数;f1 f2控制余弦;f3 f4控制反比例函数 { case GLUT_KEY_UP: k1 = 2 * k1; cout << "正弦函数系数为" << k1 <<"函数表达式为:y=sin("<<k1<<"* x);"<< endl; cout<<"窗口中的绿色线条为函数图象"<<endl; cout<<"##########################"<<endl; cout<<endl<<endl<<endl; break; case GLUT_KEY_DOWN: k1 = 0.5f*k1; cout << "正弦函数系数为" << k1 <<"函数表达式为:y=sin("<<k1<<"* x);"<< endl; cout<<"窗口中的绿色线条为函数图象"<<endl; cout<<"##########################"<<endl; cout<<endl<<endl<<endl; break; case GLUT_KEY_RIGHT: k2 += 0.01; cout << "幂函数系数为" << k2 <<"函数表达式为:y=("<<k2<<"* x^2);"<< endl; cout<<"窗口中的蓝色线条为函数图象"<<endl; cout<<"##########################"<<endl; cout<<endl<<endl<<endl; break; case GLUT_KEY_LEFT: k2 -= 0.01; cout << "幂函数系数为" << k2 <<"函数表达式为:y=("<<k2<<"* x^2);"<< endl; cout<<"窗口中的蓝色线条为函数图象"<<endl; cout<<"##########################"<<endl; cout<<endl<<endl<<endl; break; case GLUT_KEY_F1: k3 = 2 * k3; cout << "余弦函数系数为" << k3 <<"函数表达式为:y=cos("<<k3<<"* x);"<< endl; cout<<"窗口中的红色线条为函数图象"<<endl; cout<<"##########################"<<endl; cout<<endl<<endl<<endl; break; case GLUT_KEY_F2: k3 = 0.5f*k3; cout << "余弦函数系数为" << k3 <<"函数表达式为:y=cos("<<k3<<"* x);"<< endl; cout<<"窗口中的红色线条为函数图象"<<endl; cout<<"##########################"<<endl; cout<<endl<<endl<<endl; break; case GLUT_KEY_F3: k4 += 0.01; cout << "反比例函数系数为" << k4 <<"函数表达式为:y=1/("<<k4<<"* x);"<< endl; cout<<"窗口中的紫色线条为函数图象"<<endl; cout<<"##########################"<<endl; cout<<endl<<endl<<endl; break; case GLUT_KEY_F4: k4 -= 0.01; cout << "反比例函数系数为" << k4 <<"函数表达式为:y=1/("<<k4<<"* x);"<< endl; cout<<"窗口中的紫色线条为函数图象"<<endl; cout<<"##########################"<<endl; cout<<endl<<endl<<endl; break; default:break; } glutPostRedisplay(); //手动调用此函数重新绘图 }