zoukankan      html  css  js  c++  java
  • cpodeblocks+freeglut+glew 用到的库文件上传到附件 亲测可用

    https://wenku.baidu.com/view/28cd5ebfaf1ffc4fff47accf.html     摘自

    一安装包:

      codeblocks    安装32位版本

      glew

      freeglut    或者glut

    二安装步骤:

      1.先安装codeblocks   并且汉化   默认路径

      2.glut包    glut.dll     glut32.dll   复制到c:windowssysWOW64  目录下  (以下用~sysWOW64表示)       (动态链接库 存放目录)

              glut.h   到MinGWincludeGL                               (头文件存放目录)

              glut.lib    glut32.lib     到MinGWlib   

      3.freeglut包   可用此步骤替换步骤2

              删除GLUT文件从以上目录删除

             32位的freeglut.dll   到~sysWOW64

             libfreeglut.a     libfreeglut_static.a   到MinGWlib  下面

             freeglutincludeGL下的头文件,  到MinGWincludeGL  

      4.glew包     glew32.dll  到~sysWOW64

              glew.h      到 MinGWincludeGL

             glew32.lib      glew32s.lib        到MinGWlib  

      

    三  配置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();				//手动调用此函数重新绘图
    }
    
  • 相关阅读:
    《海思VPSS — 将1920*1080图像通过VPSS缩放旋转成800*1280在LCD上显示》
    《Shell编程实例 —— 自动检测并挂载硬盘》
    《Shell脚本学习 —— 运算符、输入/输出重定向》
    《Shell脚本学习 —— 函数、文件包含》
    《Shell脚本学习 —— 流程控制if、for、while、无限循环、until、case、跳出循环》
    《Shell脚本学习 —— Shell传递参数、echo命令、test命令》
    牛客多校第三场 A—pacm team (4维背包加路径压缩)
    牛客第二场Dmoney
    牛客第二场A-run
    牛客第二场A-run
  • 原文地址:https://www.cnblogs.com/dongguolei/p/13983383.html
Copyright © 2011-2022 走看看