http://www.yakergong.net/nehe/

这个网站还是opengl方面比较权威的,作者叫nehe

这东西估计是要先装个ndk,然后才能运行代码

先睡觉!

以下内容参考自http://www.yakergong.net/nehe/

(1)OpenGL 框架介绍

在Nehe的主页上一共提供了4种不同风格的OpenGL程序框架,分别为glut,Win32,面向对象的Win32,在加上Nehe教程中使用的那一种。

为了使用这个框架,你必须熟记以下四个函数,我们用它来完成OpenGL的逻辑:

* bool Initialize(); 
* 执行所有的初始化工作,如果成功函数返回true

* void Deinitialize(); 
* 执行所有的卸载工作

* void Update(DWORD milliseconds); 
* 执行所有的更新操作,传入的参数为两次操作经过的时间,以毫秒为单位

* void Draw(); 
* 执行所有的绘制操作

<1> Initialize()函数

bool GL_Example::Initialize()					// 初始化OpenGL { /*****************************************************用户自定义的初始化过程*******************/ 	glClearColor(0.0f, 0.0f, 0.0f, 0.5f);						 	glClearDepth(1.0f);											 	glDepthFunc(GL_LEQUAL);										 	glEnable(GL_DEPTH_TEST);									 	glShadeModel(GL_SMOOTH);									 	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);			 	ResizeDraw(true);					// 改变OpenGL窗口大小,直接调用子类的函数 /**********************************************************************************************/  	return true;					// 成功返回 }

在程序中,必须实现这个函数。函数的定义与声明已经写好,你所做的就是把OpenGL的代码添加到两排/******/之间。

<2>更新程序的代码

void GL_Example::Update(DWORD milliseconds)					// 程序更新函数 { 	if (m_Keys.IsPressed(VK_ESCAPE) == true)				// 按ESC退出 	{ 		TerminateApplication();									 	}  	if (m_Keys.IsPressed(VK_F1) == true)					// 按F1切换窗口/全屏模式 	{ 		ToggleFullscreen();										 	} /*******************************用户自定义的更新过程***************************************/ 	m_Angle += (float)(milliseconds) / 15.0f;					// 更新旋转的角度 /******************************************************************************************/ }

在上面的函数中,我已经为你添加了处理ESC和F1按键相应的代码,你所要做的就是完成符合你程序逻辑的更新变量的设置。同样可以可以在两排/******/之间完成它们。

<3>OpenGL的绘制

void GL_Example::Draw()								// 绘制函数 { /*****************************************************用户自定义的绘制过程*********************/ 	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);			 	glLoadIdentity();											 	glTranslatef(0.0f, 0.0f, -6.0f);							 	glRotatef(m_Angle, 0.0f, 1.0f, 0.0f);						 	glRotatef(m_Angle * 0.7f, -1.0f, 0.0f, 0.0f);				  	for (int rot1 = 0; rot1 < 2; rot1++)						// 绘制四个交错的三角形(作者想的很巧妙啊) 	{ 		glRotatef(90.0f, 0.0f, 1.0f, 0.0f);						 		glRotatef(180.0f, 1.0f, 0.0f, 0.0f);					 		for (int rot2 = 0; rot2 < 2; rot2++)					 		{ 			glRotatef(180.0f, 0.0f, 1.0f, 0.0f);				 			glBegin(GL_TRIANGLES);								 				glColor3f(1.f, 0.f, 0.f);	glVertex3f( 0.0f,  1.0f, 0.0f); 				glColor3f(0.f, 1.f, 0.f);	glVertex3f(-1.0f, -1.0f, 1.0f); 				glColor3f(0.f, 0.f, 1.f);	glVertex3f( 1.0f, -1.0f, 1.0f); 			glEnd();											 		} 	} /***********************************************************************************************/ 	glFlush();									// 强制执行所有的OpenGL命令 }

我给你的原始文件,其实什么也没帮你做,你将会的到一个空的窗口。

上面的实例是一个简单的OpenGL绘制,它将绘制四个三角形。

void GL_Example::Deinitialize()								// 用户自定义的卸载函数 { /*****************************************************用户自定义的卸载过程*********************/  /**********************************************************************************************/ }

上面就是我提供给你的简单的OpenGL程序框架,简单吧。使用它可以很快的创建一个基于OpenGL的应用程序,让你能化更多时间在OpenGL本身,而不是考虑如何实现Windows编程,以及处理那些莫名其妙的编译问题。我已经为你设置好了一切,包括头文件,lib库等相关的东西,你所要做的就是把资源下载中的“OOWin32框架”下载下来,修改其中Example.cpp文件就可以了,如果你需要自己创建工程,请把这个目录你所有的*.h,*.cpp,*.lib文件拷贝到你创建的工程中,并把Example文件改名,记得在*.cpp文件中的头文件也需要做相应的更改。

(1)opengl-nehe 4种框架的更多相关文章

  1. 国内常用的三种框架:ionic/mui/framework7对比

    国内常用的三种框架:ionic/mui/framework7对比 原文连接:http://zhihu.com/question/19558750/answer/91179040

  2. 流式大数据处理的三种框架:Storm,Spark和Samza

    许多分布式计算系统都可以实时或接近实时地处理大数据流.本文将对三种Apache框架分别进行简单介绍,然后尝试快速.高度概述其异同. Apache Storm 在Storm中,先要设计一个用于实时计算的 ...

  3. 使用四种框架分别实现百万websocket常连接的服务器

    著名的 C10K 问题提出的时候, 正是 2001 年.这篇文章可以说是高性能服务器开发的一个标志性文档,它讨论的就是单机为1万个连接提供服务这个问题,当时因为硬件和软件的**,单机1万还是一个非常值 ...

  4. [转载]流式大数据处理的三种框架:Storm,Spark和Samza

    许多分布式计算系统都可以实时或接近实时地处理大数据流.本文将对三种Apache框架分别进行简单介绍,然后尝试快速.高度概述其异同. Apache Storm 在Storm中,先要设计一个用于实时计算的 ...

  5. 大数据处理的三种框架:Storm,Spark和Samza

    许多分布式计算系统都可以实时或接近实时地处理大数据流.下面对三种Apache框架分别进行简单介绍,然后尝试快速.高度概述其异同. Apache Storm 在Storm中,先要设计一个用于实时计算的图 ...

  6. 使用四种框架分别实现百万websocket常连接的服务器--转

    原文地址:http://colobu.com/2015/05/22/implement-C1000K-servers-by-spray-netty-undertow-and-node-js/#Nett ...

  7. MVC到底是设计模式还是一种框架还是一种架构? https://www.zhihu.com/question/31079945

    具体知乎讨论内容:https://www.zhihu.com/question/31079945 MVC到底是设计模式还是一种框架还是一种架构? 我认为它是3种设计模式的演变和组合:观察者模式(Obs ...

  8. OpenGL超级宝典笔记----框架搭建

    自从工作后,总是或多或少的会接触到客户端3d图形渲染,正好自己对于3d图形的渲染也很感兴趣,所以最近打算从学习OpenGL的图形API出发,进而了解3d图形的渲染技术.到网上查了一些资料,OpenGL ...

  9. JAVA开发Web Service几种框架介绍

    郑重声明:此文为转载来的,出处已不知了,侵告删. 在讲Web Service开发服务时,需要介绍一个目前开发Web Service的几个框架,分别为Axis,axis2,Xfire,CXF以及JWS( ...

随机推荐

  1. azure 云服务证书下载方式

    打开地址自动下载证书,vs中项目-右键-发布-导入证书. https://manage.windowsazure.cn/publishsettings/index 在 Visual Studio 中打 ...

  2. UITableView 表视图编辑

    UITableViewController(表视图控制器)继承自UIViewController,自带一个tableView self.view不是UIView而是UITableView dataso ...

  3. 条款10:令operator=返回一个*this的引用

    为了编程的简洁性,有时候需要串联赋值,如:x = y = z = 15; 由于赋值采用右结合,因此上述语句被解释为:x = (y = (z = 15)); 为了实现串联赋值,复制操作符函数必须返回一个 ...

  4. P1643: [Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪

    呵呵呵呵呵,很水的DP,同时能够朴素枚举出来,这数据弱的 是 吃了尸米吧.. var n,i,j,k,l,ans:longint; begin readln(n); to trunc(sqrt(n)) ...

  5. 如何解决读取到文件末尾时碰到EOF导致的重复输出或者无用输出

    当读取到文件末尾时,会碰到EOF,如何解决呢?    方法一:我们可以通过(ch=fin.get())!=EOF来结束读取,这样就不会像eof()那样碰到EOF之后,还会再进行一次读取,导致输出一个无 ...

  6. xml之XSLT

     1.XSLT是什么  XSLT是XSL的子集,XSL是样式表.XSLT的作用:将XML文档转化成HTML,做的是中间转换者. 而主要需要学习的是XSLT(XSLTransformation).  2 ...

  7. VBS数组函数学习实例分析

    Array 函数 返回包含数组的Variant. Array(arglist) 参数:arglist是赋给包含在Variant中的数组元素的值的列表(用逗号分隔).如果没有指定此参数,则将会创建零长度 ...

  8. php7+apache的环境安装配置

    因为刚开始接触php,所以要对php的开发环境进行搭建. 1.首先到Apache的官网下载最新版: http://httpd.apache.org/download.cgi: 参照该网址配置Apach ...

  9. WKWebView 与 UIWebView

    apple和google为webkit该浏览器引擎的发扬光大做出了重要贡献,在WWDC 2014发布会上发布iOS 8中,apple公布了WebKit框架,这意味着OSX和IOS开发者将共用同样的开发 ...

  10. 【BZOJ】【1177】【APIO2009】Oil

    DP 找出三个正方形,可以转化为将整个油田切成三个矩形块,每块中各找一个正方形区域,切的形式只有6种,分类更新ans即可 题解:http://trinklee.blog.163.com/blog/st ...