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

一下为测试代码

/*
==========================================================
环境说明:
IDE:vs2015 studio
辅助工具库:freeglut
opengl扩展库:glew
实现功能:
在笛卡尔二维平面坐标系中,制作二次函数、反比例函数、
正弦以及余弦函数的图像,并通过键盘四个方向键调整其
中部分函数的参数值,从而达到改变函数图像的形状。
作者信息:
单位:黑山县大虎山镇初级中学
姓名:董国磊
邮箱:stupidmule@126.com
手机:13897899826
==========================================================
*/ #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;
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(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);
}
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值为" << k1 << endl; //实时监测参数值
cout << "当前的二次函数的k2值为" << k2 << endl;
cout << "========" << endl;
glutPostRedisplay(); //手动调用此函数重新绘图
}

codeblocks opengl glew freeglut 2020.11.15的更多相关文章

  1. 基于glew,freeglut的imshow

    OpenGL显示图片,这篇博客使用glew + freeglut + gdal来实现imshow. 主要修改: 使用BGR而不是RGB,保持和opencv行为一致 纯C,去掉C++相关的 去掉GDAL ...

  2. OpenGL学习日志(2020.4之前)

    咳咳,原本这个日志是本机上随便写的一些记录,也没怎么注意可读性和格式,有用信息密度很小,所以实用价值并不大.暂时由于不可抗因素得先鸽一段落了... 后续的日志会升格为模块化的学习记录,(应该)将会有很 ...

  3. Linux编译内核 Ubuntu18.04 -2020.11.04

    Linux编译内核 Ubuntu18.04 -2020.11.04 关闭虚拟机并备份 首先关闭虚拟机,其次直接找到.vmdk所在目录,并压缩该目录实现备份 下载内核源码 Linux内核官网:https ...

  4. Goland 2020.2.x 激活码永久破解教程 (最新Goland激活码!2020.11.26亲测可用!)

    在2020.11.26 Goland的用户们又迎来了一次更新,这就导致很多软件打开时候就提示Goland激活码已经失效,码小辫第一时间给各位分享了关于最新Goland激活破解教程! goland已经更 ...

  5. Sprint1(第二天11.15)

    Sprint1(第二天11.15) Sprint1第一阶段 1.类名:软件工程-第一阶段 2.时间:11.14-11.23 3.选题内容:web版-餐厅到店点餐系统 4.团队博客地址: http:// ...

  6. Notes of Daily Scrum Meeting(11.15)

    Notes of Daily Scrum Meeting(11.15) 今天周六我们的主要工作是把这周落下的一些工作补回来,这是写程序的最后阶段,准备进入测试阶段了,所以之前的工作 要补齐,今天大家的 ...

  7. 11.15 Daily Scrum

    今天是假期回来的第一个周末,也是我们团队的又一次进度汇总总结和调试工作开展,鉴于一周以来大家的工作有了很大的成果,所以,本次召开的会议主旨在于解决一些开发方面的细节问题,达成共识,为日后进一步的功能方 ...

  8. codeblocks opengl的配置

    codeblocks opengl的配置 GLUT 3.7 下载地址:http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip ...

  9. 2017.11.15 String、StringBuffer、StringBuilder的比较(todo)

    参考来自:http://blog.csdn.net/jeffleo/article/details/52194433 1.速度 一般来说,三者的速度是:StringBuilder > Strin ...

随机推荐

  1. Kafka入门之producer

    一些重要的参数: 1.acks指定了在给producer发送响应前,leader broker必须要确保已成功写入该消息的副本数.当前acks有3个取值,0,1,和all 2.buffer.memor ...

  2. Kafka速度为什么那么快

    记录一下 Kafka速度为什么那么快 Kafka的消息是保存或缓存在磁盘上的,一般认为在磁盘上读写数据是会降低性能的,因为寻址会比较消耗时间,但是实际上,Kafka的特性之一就是高吞吐率. 即使是普通 ...

  3. 【佛山市选2013】JZOJ2020年8月7日提高组T1 回文子序列

    [佛山市选2013]JZOJ2020年8月7日提高组T1 回文子序列 题目 描述 回文序列是指左右对称的序列.例如1 2 3 2 1是回文序列,但是1 2 3 2 2就不是.我们会给定一个N×M的矩阵 ...

  4. 大厂是如何用DevCloud流水线实现自动化部署Web应用的?

    DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师. 官方网站:devui.design Ng组件库:ng-devui(欢 ...

  5. OpenCV-Python图像转换为PyQt图像的变形及花屏无法正常显示问题研究

    ☞ ░ 前往老猿Python博文目录 ░ 一.引言 在<PyQt转换显示Python-OpenCV图像实现图形化界面的视频播放>介绍了实现在OpenCV和PyQt之间转换并传递图像实现在P ...

  6. moviepy音视频开发:音频剪辑基类AudioClip

    ☞ ░ 前往老猿Python博文目录 ░ 一.背景知识介绍 1.1.声音三要素: 音调:人耳对声音高低的感觉称为音调(也叫音频).音调主要与声波的频率有关.声波的频率高,则音调也高. 音量:也就是响度 ...

  7. PyQt(Python+Qt)学习随笔:PyQt界面派生类构造方法中super方法的使用

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在<第15.7节 PyQt入门学习:PyQt5应用构建详细过程介绍>和订阅专栏<第 ...

  8. jdk源码之 hashmap 与hashtable 的区别

      hashmap hashtable 线程安全 否,但jdk5之后,提供ConcurrentHashMap,可 替代HashTable. 是,synchronized value是否允许为空 是 否 ...

  9. flask中的return、过滤器详解

    之前吧一直学习flask的时候,一直不明白response是怎么产生,今天是明白了.retrun  哎呀,这个地方看着挺小心的东西, 蕴含的能量可不小啊.今天我详细总结总结. 先来写jinjia2语法 ...

  10. 【Codeforces 715C】Digit Tree(点分治)

    Description 程序员 ZS 有一棵树,它可以表示为 \(n\) 个顶点的无向连通图,顶点编号从 \(0\) 到 \(n-1\),它们之间有 \(n-1\) 条边.每条边上都有一个非零的数字. ...