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 ...
随机推荐
- IPSec传输模式/隧道模式下ESP报文的装包与拆包过程
IPSec协议:IPsec将IP数据包的内容先加密再传输,即便中途被截获,由于缺乏解密数据包所必要的密钥,攻击者也无法获取里面的内容. 传输模式和隧道模式:IPsec对数据进行加密的方式有两种:传输模 ...
- 如何测试一个APP
1.是否支持各种手机系统 2.是否会因为分辨率而出错 3.不同机型能否安装 4.老旧机型 能否通用 5.广告时长 6.测试能否登陆注册 7.卸载时是否会发生意外 8.安装时会不会误认为带病毒 9.用户 ...
- CentOS下Mysql简易操作
Mysql mysql的root密码重置 编辑mysql主配置文件 vim /etc/my.cnf 添加..grant参数 [mysqld] skip-grant 重启mysql服务 service ...
- SpringIOC循环依赖
目录 1. 什么是循环依赖 注意: 这⾥不是函数的循环调⽤,是对象的相互依赖关系. 循环调⽤其实就是⼀个死循环,除⾮有终结 条件. 2. 循环依赖处理机制 2.1 演示场景: 2.2 处理机制简图 总 ...
- 通过自定义拦截器优雅的导出Excel并标红的重复数据
平时我们导入导出Excel的时候如果用poi导出,会发现光设置格式都要很多代码,看起来非常的不优雅.后来业务中遇到了需要导入非常巨大的Excel的需求.如果继续用poi的方式,因为poi把所有exce ...
- C#中的WinForm问题——使用滚动条时页面闪烁及重影问题
当使用鼠标进行滚动查看页面时,由于页面会频繁刷新,如果页面中控件较多会导致页面出现闪烁.重影等问题,如下图所示: 在网上搜索过该问题,大部分都说使用双缓冲可以解决此类问题,即通过设置DoubleBuf ...
- Spring Boot 内置定时任务
启用定时任务 @SpringBootApplication @EnableScheduling // 启动类添加 @EnableScheduling 注解 public class ScheduleD ...
- 老猿学5G扫盲贴:中国移动5G融合计费漫游计费架构和路由方案
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt+moviepy音视频剪辑实战 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一. ...
- PyQt(Python+Qt)学习随笔:Qt Designer中部件的快捷菜单策略(contextMenuPolicy)取值及含义
在Qt Designer中可以设置部件的快捷菜单策略,快捷菜单通过在部件上点击鼠标右键触发. 快捷菜单策略通过枚举类型Qt.ContextMenuPolicy来定义,对应枚举类型取值及含义如下: 通过 ...
- kickstart 谷歌 D 2020 年 7 月 12 日 13: 00 - 16: 00
https://codingcompetitions.withgoogle.com/kickstart/round/000000000019ff08/0000000000386d5c (kick st ...