一、安装

我的系统是win10 64位,用的是visual studio2013,vs装在了E盘下面。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

visual studio下载地址如下:

链接:https://pan.baidu.com/s/1K74efwL5rSyONF7VS1IRMQ
提取码:pb7k

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

安装过程我就不多说了,首先解压,然后按照说明文档做就行

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

然后下载OpenGL配置文件glut,下载链接如下:

链接:https://pan.baidu.com/s/1lkFYBpdrc0Ry3cYW_0h2Xw
提取码:i1b9
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面是安装过程,打开glut文件夹,发现有5个文件:

1.把glut.h 复制到vs安装的目录下,如果你是默认安装,那么应该去C盘找,如果没有没有GL文件夹,自己创建

2.把glut.lib和glut32.lib复制到:

3.把glut.dll 和glut32.dll复制到 ‪C:\Windows\SysWOW64下:

这时候已经ok啦。我们用vs创建项目吧!

1.在开始栏里找到visual studio 2013

2.打开visual stdio2013,新建--->项目

3.选择空项目

4.写测试文件

5.测试文件代码如下:

#include <GL\glut.h>void myDisplay(void){glClear(GL_COLOR_BUFFER_BIT);glRectf(-0.5f, -0.5f, 0.5f, 0.5f);  //画矩形glFlush();}int main(int argc, char *argv[]){//初始化glutInit(&argc, argv);//显示模式glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);//窗口位置glutInitWindowPosition(100, 100);//窗口尺寸glutInitWindowSize(400, 400);//创建窗口,窗口标题为“FirstOpenGLProgram”glutCreateWindow("FirstOpenGLProgram");//绘制回掉函数glutDisplayFunc(&myDisplay);glutMainLoop();return 0;}

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

二、简单代码分析

好了,基本步骤已经完成,接下来我们要阅读简单的代码并对OpenGL进行理解了:

我们要用opengl画一个cube,创建cube.cpp,代码如下

#include <windows.h>
#include <GL/glut.h>void init(void)
{glClearColor(0.0, 0.0, 0.0, 0.0);glShadeModel(GL_FLAT);
}/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Anything you want to display on the screen, draw it here. * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*  Clear the screen.  Set the current color to white.
*  Draw the wire frame cube.
*/void display(void)
{glClear(GL_COLOR_BUFFER_BIT);glColor3f(1.0, 1.0, 1.0);glLoadIdentity();    /*  clear the matrix    *///--------------- you can define your own transformation-----------glTranslatef(0.0, 0.0, -5.0);  /*  viewing transformation  */glScalef(1.0, 2.0, 1.0);  /*  modeling transformation *///---------------- you can draw something else here-----------glutWireCube(1.0);  /*  draw the cube   */glFlush();
}/*  Called when the window is first opened and whenever
*  the window is reconfigured (moved or resized).
*/void reshape(int w, int h)
{/*  define the projection  */glMatrixMode(GL_PROJECTION);glLoadIdentity();glFrustum(-1.0, 1.0, -1.0, 1.0, 1.5, 20.0);glMatrixMode(GL_MODELVIEW);   /*  back to modelview matrix    */glViewport(0, 0, w, h);   /*  define the viewport */
}/*  Main Loop
*  Open window with initial window size, title bar,
*  RGBA display mode, and handle input events.
*/int main(int argc, char** argv)
{glutInit(&argc, argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);//define size and the relative positon of the applicaiton window on the displayglutInitWindowSize(500, 500);glutInitWindowPosition(100, 100);//init the defined window with "argv[1]" as topic showed on the top the windowglutCreateWindow(argv[0]);// opengl setupinit();//define callbacksglutDisplayFunc(display);glutReshapeFunc(reshape);//enter the loop for displayglutMainLoop();return 0;
}

运行结果如下:

下面说一下我对这个程序的理解,首先理解GLUT是个啥玩意儿,官网英文解释如下:

GLUT (pronounced like the glut in gluttony) is the OpenGL Utility Toolkit, a window system independent toolkit for writing OpenGL programs. It implements a simple windowing application programming interface (API) for OpenGL. GLUT makes it considerably easier to learn about and explore OpenGL programming. GLUT provides a portable API so you can write a single OpenGL program that works across all PC and workstation OS platforms.

GLUT is designed for constructing small to medium sized OpenGL programs. While GLUT is well-suited to learning OpenGL and developing simple OpenGL applications, GLUT is not a full-featured toolkit so large applications requiring sophisticated user interfaces are better off using native window system toolkits. GLUT is simple, easy, and small.

意思就是GLUT简单、轻便、快捷,能够在跨平台工作,比较适合初学者使用。但是GLUT并不会全能的,如果需要开发更加精致的OpenGL程序,实现更加完善的图形学画面,需要其他的工具包。

The toolkit supports:

  • Multiple windows for OpenGL rendering
  • Callback driven event processing
  • Sophisticated input devices
  • An 'idle' routine and timers
  • A simple, cascading pop-up menu facility
  • Utility routines to generate various solid and wire frame objects
  • Support for bitmap and stroke fonts
  • Miscellaneous window management functions

那么这个程序中调用的函数都有什么作用呢:

>>>>>>初始化函数

void glutInit(int* argc,char** argv)-------初始化GLUT库

void glutInitDisplayMode(unsigned int mode)--------设置图形显示模式

  • GLUT_RGBA:当未指明GLUT-RGBA或GLUT-INDEX时,是默认使用的模式。表明欲建立RGBA模式的窗口。
  • GLUT_RGB:与GLUT-RGBA作用相同。
  • GLUT_INDEX:指明为颜色索引模式。
  • GLUT_SINGLE:只使用单缓存
  • GLUT_DOUBLE:使用双缓存。以避免把计算机作图的过程都表现出来,或者为了平滑地实现动画。
  • GLUT_ACCUM:让窗口使用累加的缓存。
  • GLUT_ALPHA:让颜色缓冲区使用alpha组件。
  • GLUT_DEPTH:使用深度缓存。
  • GLUT_STENCIL:使用模板缓存。
  • GLUT_MULTISAMPLE:让窗口支持多例程。
  • GLUT_STEREO:使窗口支持立体。
  • GLUT_LUMINACE:luminance是亮度的意思。但是很遗憾,在多数OpenGL平台上,不被支持。

glutInitWindowSize(500, 500)--------设置程序要产生的窗口大小,以左上角为原点,以像素为单位
glutInitWindowPosition(100, 100)----------设置程序要产生的窗口位置,以左上角为原点,以像素为单位

>>>>>>窗口管理函数

int glutCreateWindow(char* name)---------产生一个顶层的窗口,name作为窗口的名字,也就是窗口标题栏显示的内容,返回值是生成窗口的标记符,可用函数glutGetWindow()加以引用。

>>>>>>>注册回调函数

void glutDisplayFunc(void (*func)(void) )--------为当前窗口设置显示回调函数

void glutReshapeFunc(void (*Func)(int width, int height) )----------指定当窗口的大小改变时调用的函数

>>>>>>>事件处理函数

void glutMainLoop(void)----------让 glut 程序进入事件循环。在一个glut程序中最多只能调用一次。一旦调用,会直到程序结束才返回

>>>>>>>自定义函数

init():

glClearColor()-------设置清除颜色

void glShadeModel(GLenum mode)--------指明使用哪种着色技术,可以取值GL_FLAT和GL_SMOOTH。默认取值是GL_SMOOTH, 在使用顶点数据绘制几何图形时,如果为每个顶点指定了顶点颜色,此时若使用GL_SMOOTH,每个顶点使用对应的顶点颜色来着色,而顶点之间的片元颜色则使用差值的方式来计算获得,结果就是渐变色;而若使用GL_FLAT,假设几何图形由n个三角形构成,则只会使用顶点颜色数组中最后n个颜色进行着色。 比如,左图是GL_SMOOTH着色,右图是GL_FLAT着色:

void display(void):

glClear(GL_COLOR_BUFFER_BIT)-----https://blog.csdn.net/shuaihj/article/details/7230138

glColor3f(1.0, 1.0, 1.0)------设置渲染颜色

glLoadIdentity()-------https://blog.csdn.net/shuaihj/article/details/7228265

glTranslatef(0.0, 0.0, -5.0)--------https://www.cnblogs.com/lihuiyy/archive/2011/11/10/2244317.html

glutWireCube()--------模型绘制函数

https://blog.csdn.net/augusdi/article/details/20546919

https://blog.csdn.net/yearafteryear/article/details/9174465

glflush()------https://blog.csdn.net/meegomeego/article/details/8594373

https://blog.csdn.net/xb554790401/article/details/38704493

void reshape(int w, int h):

glMatrixMode(GL_PROJECTION)------------https://blog.csdn.net/jiangdf/article/details/8460012

glFrustum()-----------https://blog.csdn.net/peng6662001/article/details/7082436

深深地觉得想要学好图形学,真的需要把计算机的原理等基础打的非常扎实。。。。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

以上链接都是讲的比较清楚的blog,后续还会继续更新~

vs2013配置OpenGL+简单案例分析相关推荐

  1. 线程死锁问题以及简单案例分析

    线程死锁问题以及简单案例分析 1. 什么是死锁? 1.1 概述 1.2. 业务场景--举例说明 2. 死锁例子 2.1 代码 2.2 效果 2.3 代码分析 3. 解决案例中死锁问题 4. 怎么避免线 ...

  2. led HAL简单案例分析

    mr_raptor的专栏 专注Android系统,移动平台研究,ARM BSP开发,著有<深入浅出嵌入式底层软件开发>北航出版社 目录视图 摘要视图 订阅 CSDN Android客户端 ...

  3. ubuntu-hadoop配置安装-简单案例以及伪分布式搭建

    文章目录 linux 下创建 hadoop用户 hadoop的安装与环境配置 先卸载原有的 JDK 安装hadoop和JDK 安装JDK 安装hadoop Standalone Operation 模 ...

  4. 45.JVM调优策略、常见问题:内存泄漏(年老代堆空间被占满、持久代被占满、堆栈溢出、线程堆栈满、系统内存被占满)优化方法:优化目标、优化GC步骤、优化总结;案例分析(公司系统参数、网上给的配置参数)

    45.JVM调优策略 45.1.常见问题 45.1.1.内存泄漏 45.1.1.1.年老代堆空间被占满 45.1.1.2.持久代被占满 45.1.1.3.堆栈溢出 45.1.1.4.线程堆栈满 45. ...

  5. 网络工程师学习参考资料路由器配置案例分析

    网络工程师学习参考资料路由器配置案例分析 2006-08-30 23:01:00 标签:配置 路由器 案例 网络工程师 [推送到技术圈] INTERNET共享资源的方式越来越多,就大多数而言,DDN专 ...

  6. Java培训总结:过滤器链的实现方法、配置和案例分析

    今天小千给大家分享的是Java培训总结:过滤器链的实现方法.配置和案例分析. 过滤器能够对网站中的各种内容进行过滤(页面.Servlet.图片.文件),可以在网站内容请求和响应时进行一些操作,完成一些 ...

  7. win7·64bit+VS2013+opencv的简单配置

    win7·64bit+VS2013+opencv的简单配置 win7x64 vs2013 opencv 如果你不需要: 在调试的时候看OpenCV的源代码: 添加新的功能支持,比如GPU. OpenC ...

  8. python 装机配置_Python实现自动装机功能案例分析

    前言 提示:在管理服务器的过程中,发现有很多服务器在启动的过程中默认以PXE方式启动,这就导致我们无法将PXE装机程序放开到所有的交换机端口中,本文是以Python对dell服务器进行了一些控制,更多 ...

  9. 国内沪深股市的股票策略分析的简单案例

    国内沪深股市的股票策略分析的简单案例 最近学习了一段时间的python,觉得用来做股票策略分析还是挺有趣的,因此参考网上的一些例子,以及tushare工具指南,编写了一个功能简单的股票策略分析程序,抛 ...

最新文章

  1. Spark源码阅读02-Spark核心原理之消息通信原理
  2. hdu1824 基础2sat
  3. 三甲医院需要部署哪些网络安全设备
  4. 【CyberSecurityLearning 附】使用PHP语言搭建简单的论坛:注册功能实现+PHP个人中心设计+简单留言板
  5. Python练习-从小就背不下来的99乘法表
  6. as3 与 java_每天学一点Flash(48) As3.0 与 java 通信(1)
  7. 算法总结之 生成窗口的最大值数组
  8. 操作系统中的互斥锁与条件变量
  9. (转)JAVA泛型通配符T,E,K,V区别,T以及Class,Class的区别
  10. iOS ChildViewController与View
  11. 如何让你的Python程序支持多语言
  12. Modbus转Profinet网关连接英威腾Goodrive200A配置案例
  13. 吴恩达深度学习笔记——改善深层神经网络:超参数调整,正则化,最优化(Hyperparameter Tuning)
  14. 在哪里能学到计算机基础知识,电脑基础知识学习
  15. 如何使用手机软件将图片转换为文字
  16. echarts树状图怎么设置主节点和子节点的距离_教你秒懂CAD出图比例正确设置技巧...
  17. STM32初识及运用—GPIO
  18. VR旅游应用案例解析,世界那么大用VR去看看!
  19. 【BZOJ 4605】崂山白花蛇草水 替罪羊树套线段树
  20. 抖音上的战斗力测试软件,抖音战斗力测试-f2抖音战斗力测试app官方软件预约 v1.0-优盘手机站...

热门文章

  1. java的接口常用命名_Java命名和目录接口,Java Naming and Directory Interface,音标,读音,翻译,英文例句,英语词典...
  2. R语言ggplot2可视化:gganimate包transition_time函数创建动态散点图动画(gif)、shadow_wake函数配置动画的渐变效果(gradual falloff)拖尾效应
  3. nyoj-741-“数学家“ST
  4. 网工知识角|如何理解网络拓扑中的下一跳地址
  5. 在win10中安装caffe并配置MATLAB和Python接口(支持GPU加速)
  6. 15.内置函数,匿名函数
  7. git 简单命令使用
  8. JQ---h5页面上实现微信扫一扫功能
  9. 手写简单的HashMap(jdk1.7)
  10. 【项目管理】软件项目经理述职报告