(1)opengl-nehe 4种框架
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种框架的更多相关文章
- 国内常用的三种框架:ionic/mui/framework7对比
国内常用的三种框架:ionic/mui/framework7对比 原文连接:http://zhihu.com/question/19558750/answer/91179040
- 流式大数据处理的三种框架:Storm,Spark和Samza
许多分布式计算系统都可以实时或接近实时地处理大数据流.本文将对三种Apache框架分别进行简单介绍,然后尝试快速.高度概述其异同. Apache Storm 在Storm中,先要设计一个用于实时计算的 ...
- 使用四种框架分别实现百万websocket常连接的服务器
著名的 C10K 问题提出的时候, 正是 2001 年.这篇文章可以说是高性能服务器开发的一个标志性文档,它讨论的就是单机为1万个连接提供服务这个问题,当时因为硬件和软件的**,单机1万还是一个非常值 ...
- [转载]流式大数据处理的三种框架:Storm,Spark和Samza
许多分布式计算系统都可以实时或接近实时地处理大数据流.本文将对三种Apache框架分别进行简单介绍,然后尝试快速.高度概述其异同. Apache Storm 在Storm中,先要设计一个用于实时计算的 ...
- 大数据处理的三种框架:Storm,Spark和Samza
许多分布式计算系统都可以实时或接近实时地处理大数据流.下面对三种Apache框架分别进行简单介绍,然后尝试快速.高度概述其异同. Apache Storm 在Storm中,先要设计一个用于实时计算的图 ...
- 使用四种框架分别实现百万websocket常连接的服务器--转
原文地址:http://colobu.com/2015/05/22/implement-C1000K-servers-by-spray-netty-undertow-and-node-js/#Nett ...
- MVC到底是设计模式还是一种框架还是一种架构? https://www.zhihu.com/question/31079945
具体知乎讨论内容:https://www.zhihu.com/question/31079945 MVC到底是设计模式还是一种框架还是一种架构? 我认为它是3种设计模式的演变和组合:观察者模式(Obs ...
- OpenGL超级宝典笔记----框架搭建
自从工作后,总是或多或少的会接触到客户端3d图形渲染,正好自己对于3d图形的渲染也很感兴趣,所以最近打算从学习OpenGL的图形API出发,进而了解3d图形的渲染技术.到网上查了一些资料,OpenGL ...
- JAVA开发Web Service几种框架介绍
郑重声明:此文为转载来的,出处已不知了,侵告删. 在讲Web Service开发服务时,需要介绍一个目前开发Web Service的几个框架,分别为Axis,axis2,Xfire,CXF以及JWS( ...
随机推荐
- 九度oj 1525 子串逆序打印
原题链接:http://ac.jobdu.com/problem.php?pid=1525 字符串简单题,注意开有结尾有空格的情况否则pe or wa #include<algorithm> ...
- 在51系列中data,idata,xdata,pdata的区别
在51系列中data,idata,xdata,pdata的区别: data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码 也最小. idata:固定指前面 ...
- android switch控件的使用
open.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Overridepublic void onCheckedChange ...
- pb datawindow 判断是否是最后一列最后一行
li_column1 = GetColumn() ls_columnname = GetColumnName() Send(Handle(This),,,Long(,)) ll_row2 = GetR ...
- java中的匿名内部类总结(转)
源出处: java中的匿名内部类总结 匿名内部类也就是没有名字的内部类 正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写 但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接 ...
- snmp4j 编程
从www.snmp4j.org下载snmp4j的jar包,用eclipse新建一个java项目.将jar包导入工程(只有一个jar包),开始编程 一个简单的测试程序 //create target / ...
- Asp.net将图片转为Base64编码
protected void Page_Load(object sender, EventArgs e) { Image img = new Bitmap(Server.MapPath("/ ...
- [转载]Sublime Text 3 搭建 React.js 开发环境
[转载]Sublime Text 3 搭建 React.js 开发环境 Sublime有很强的自定义功能,插件库很庞大,针对新语言插件更新很快,配合使用可以快速搭建适配语言的开发环境. 1. babe ...
- VIM 技巧 (二)查找与替换
今天和大家分享下 对于 vim 中 查找与替换方法 例如有一篇文章.中英文不限制. 用户如果想查找其中的文字或单词 在 win系统的Notepad中一般都时 ctrl + F 去查询 而在 vim ...
- hdu 5120 Intersection
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5120 A ring is a 2-D figure bounded by two circles sh ...