zoukankan      html  css  js  c++  java
  • 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();				//手动调用此函数重新绘图
    }
    
  • 相关阅读:
    【全网最全的博客美化系列教程】文章总目录
    不要再被骗了------QQ盗号原理大揭秘
    努力的孩子运气不会太差,跌宕的人生定当更加精彩
    我的七条人生哲理以及个人学习方法总结
    博客园自定义页面风格设计 后续篇(页面设计模式及代码高亮 鼠标点击效果升级)
    【资料分享】500篇干货解读人工智能新时代
    我的大一生活以及在博客园写博客的这一年
    博客园自定义页面风格设计
    ACM退役记&&回忆录
    留言板
  • 原文地址:https://www.cnblogs.com/dongguolei/p/13977548.html
Copyright © 2011-2022 走看看