codeblocks opengl glew freeglut 2020.11.15
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的更多相关文章
- 基于glew,freeglut的imshow
OpenGL显示图片,这篇博客使用glew + freeglut + gdal来实现imshow. 主要修改: 使用BGR而不是RGB,保持和opencv行为一致 纯C,去掉C++相关的 去掉GDAL ...
- OpenGL学习日志(2020.4之前)
咳咳,原本这个日志是本机上随便写的一些记录,也没怎么注意可读性和格式,有用信息密度很小,所以实用价值并不大.暂时由于不可抗因素得先鸽一段落了... 后续的日志会升格为模块化的学习记录,(应该)将会有很 ...
- Linux编译内核 Ubuntu18.04 -2020.11.04
Linux编译内核 Ubuntu18.04 -2020.11.04 关闭虚拟机并备份 首先关闭虚拟机,其次直接找到.vmdk所在目录,并压缩该目录实现备份 下载内核源码 Linux内核官网:https ...
- Goland 2020.2.x 激活码永久破解教程 (最新Goland激活码!2020.11.26亲测可用!)
在2020.11.26 Goland的用户们又迎来了一次更新,这就导致很多软件打开时候就提示Goland激活码已经失效,码小辫第一时间给各位分享了关于最新Goland激活破解教程! goland已经更 ...
- Sprint1(第二天11.15)
Sprint1(第二天11.15) Sprint1第一阶段 1.类名:软件工程-第一阶段 2.时间:11.14-11.23 3.选题内容:web版-餐厅到店点餐系统 4.团队博客地址: http:// ...
- Notes of Daily Scrum Meeting(11.15)
Notes of Daily Scrum Meeting(11.15) 今天周六我们的主要工作是把这周落下的一些工作补回来,这是写程序的最后阶段,准备进入测试阶段了,所以之前的工作 要补齐,今天大家的 ...
- 11.15 Daily Scrum
今天是假期回来的第一个周末,也是我们团队的又一次进度汇总总结和调试工作开展,鉴于一周以来大家的工作有了很大的成果,所以,本次召开的会议主旨在于解决一些开发方面的细节问题,达成共识,为日后进一步的功能方 ...
- codeblocks opengl的配置
codeblocks opengl的配置 GLUT 3.7 下载地址:http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip ...
- 2017.11.15 String、StringBuffer、StringBuilder的比较(todo)
参考来自:http://blog.csdn.net/jeffleo/article/details/52194433 1.速度 一般来说,三者的速度是:StringBuilder > Strin ...
随机推荐
- 使用zabbix监控Jenkins
一.监控架构图 二.实现思路 在 Jenkins 上安装 Metrics 插件,使 Jenkins 暴露 metrics api: 编写python代码从api抓取数据,并将数据解析为zabbix可以 ...
- 2020年团体程序设计天梯赛-总决赛 L2-4 网红点打卡攻略
题目:一个旅游景点,如果被带火了的话,就被称为"网红点".大家来网红点游玩,俗称"打卡".在各个网红点打卡的快(省)乐(钱)方法称为"攻略" ...
- ③SpringCloud 实战:使用 Ribbon 客户端负载均衡
这是SpringCloud实战系列中第三篇文章,了解前面第两篇文章更有助于更好理解本文内容: ①SpringCloud 实战:引入Eureka组件,完善服务治理 ②SpringCloud 实战:引入F ...
- sql中count(1)、count(*)与count(列名)的区别
1. count(1) and count(*) 当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了!从执行计划来看,count(1)和count(*)的效果是 ...
- AlanShan数据库课程设计报告
目 录 1.绪论.... 2 1.1前言... 2 1.2社会背景... 2 1.3超市背景... 3 2.系统可行性研究.... 4 2.1 技术可行性研究... 4 2.2 经济可行性研究. ...
- opencv-python imread、imshow浏览目录下的图片文件
☞ ░ 前往老猿Python博文目录 ░ 一.几个知识点 1.1.使用Python查找目录下的文件 具体请参考<Python正则表达式re模块和os模块实现文件搜索模式匹配>. 1.2.o ...
- 小程序map地图点击makert放大效果和点击放大地图
WXML文件和JS文件代码在下方 <view class='map'> <map id="map" longitude="{{location.lng} ...
- WinForm 加载大数据时不闪烁的ListView
自己之前做小工具的时候,遇到这个问题,记录一下... namespace 相册处理 { //将ListView重载为此新类,解决加载过程中闪烁的问题 //在designer.cs中改写: //priv ...
- 查询时间倒退一天-项目中惊现神秘BUG-JsonFormat使用采坑记
一.问题由来 前一天下午正在写代码的时候,领导突然走过来跟我说,让我去看一个神秘的BUG,说是在数据库中查询时的一个日期 返回到页面后,查询时间倒退了一天.一听到这个BUG,我就感觉很奇怪,还有这样的 ...
- 使用Promise实现红绿灯交替重复亮
红灯3秒亮一次,黄灯2秒亮一次,绿灯1秒亮一次:如何让三个灯不断交替重复亮灯?(用Promise实现) function red() { console.log('red'); } function ...