OpenGL第12-14讲小结
首先要为自己为什么没有写第10讲的控制3D场景和第11讲的红旗飘飘呢?因为没看啊~哈哈哈,而且我尝试着运行红旗飘飘的时候电脑蓝屏了(可能不是它的锅),暂时跳过了。
恩,12到14主要了解了这么些东西,一个使用List来批量创建重复的对象,还有就是显示3D文字。
创建一个List:(方便自己记直接贴代码了,其实就是懒)
GLvoid BuildLists()
{
box = glGenLists();// 创建两个显示列表的名称 glNewList(box,GL_COMPILE); // 创建第一个显示列表
glBegin(GL_QUADS); // 开始绘制四边形
/*画多边形
*
*/
glEnd();
glEndList();
top=box+; //开始绘制第二个列表
glNewList(top,GL_COMPILE); // 盒子顶部的显示列表
glBegin(GL_QUADS); // 开始绘制四边形
// 上面 glEnd(); // 结束绘制四边形
glEndList(); // 第二个显示列表创建完毕 }
这样得到的List,给我的感觉就是将glNewList(,)与glEndList()之间的代码存起来,后面的用glCallList()的效果就是把在这儿存起来的代码放到那去执行一遍,调一次就执行一次。
而关于3D文字的效果:
GLvoid BuildFont(GLvoid)
{
base =glGenLists();
HFONT font; // 字体句柄
HFONT oldfont; // 旧的字体句柄
font = CreateFont(-, // 字体高度
, // 字体宽度
, // 字体的旋转角度 Angle Of Escapement
, // 字体底线的旋转角度Orientation Angle
FW_BOLD, // 字体的重量
FALSE, // 是否使用斜体
FALSE, // 是否使用下划线
FALSE, // 是否使用删除线
ANSI_CHARSET, // 设置字符集
OUT_TT_PRECIS, // 输出精度
CLIP_DEFAULT_PRECIS, // 裁剪精度
ANTIALIASED_QUALITY, // 输出质量
FF_DONTCARE|DEFAULT_PITCH, // Family And Pitch
"Courier New"); // 字体名称
oldfont = (HFONT)SelectObject(hDC, font); // 选择我们需要的字体
//wglUseFontBitmaps(hDC, 32, 96, base); // 创建96个显示列表,绘制从ASCII码为32-128的字符
wglUseFontOutlines( hDC, // 设置当前窗口设备描述表的句柄
, // 用于创建显示列表字体的第一个字符的ASCII值
, // 字符数
base, // 第一个显示列表的名称
0.0f, // 字体的光滑度,越小越光滑,0.0为最光滑的状态
0.2f, // 在z方向突出的距离
WGL_FONT_POLYGONS, // 使用多边形来生成字符,每个顶点具有独立的法线
gmf); //一个接收字形度量数据的数组的地址,每个数组元素用它对应的显示列表字符的数据填充 SelectObject(hDC, oldfont); // 选择原来的字体
DeleteObject(font); // 删除字体
}
从2D向3D的进化就是把注释那句换成后面的wglUseFontOutlines(),并且为了能看出来是3D,需要旋转一些角度。
至于其他的话好像没有什么特别的,今天没有什么状态,没看多少,就到这里吧。
对了,还有一点,就是例子里为什么用到了sin,cos之类的,后来想了下,可能是因为随着sin(x),cos(x)的X的不断增长,其值只会在-1~1之间波动,然后图形就不会出屏幕,应该就是这个原因吧。
OpenGL第12-14讲小结的更多相关文章
- OpenGL第8,9讲小结
这两节,透明度和物体的3D运动,主要集中在第9讲,因为第9讲也用到了通过Alpha值来调整透明度的地方. 因为要模拟星星,所以要创建的四边形需要很多,例子中创建了50个正方形.因为每个星星的属性都差不 ...
- JVM基础系列第14讲:JVM参数之GC日志配置
说到 Java 虚拟机,不得不提的就是 Java 虚拟机的 GC(Garbage Collection)日志.而对于 GC 日志,我们不仅要学会看懂,而且要学会如何设置对应的 GC 日志参数.今天就让 ...
- 第14讲 | HTTP协议:看个新闻原来这么麻烦
第14讲 | HTTP协议:看个新闻原来这么麻烦 http://www.163.com 是个 URL,叫作统一资源定位符. 之所以叫统一,是因为它是有格式的.HTTP 称为协议,www.163.com ...
- [ionic开源项目教程] - 第14讲 ionic解决跨域问题
[ionic开源项目教程] 第14讲 使用jsonp解决跨域问题 相信很多朋友在开发中都会遇到以下这个问题. No 'Access-Control-Allow-Origin' header is pr ...
- 在Debian Wheezy 7.3.0上编译安装3.12.14内核
最近需要对Linux的一个内核模块进行调整实验,故决定先在虚拟机中完成编译调试工作,最后再在真实的系统上进行测试.为了防止遗忘,把过程记录于此. 1. 准备系统环境 首先从官网下载最新版的Virtua ...
- Gitlab一键端的安装汉化及问题解决(2017/12/14目前版本为10.2.4)
Gitlab的安装汉化及问题解决 一.前言 Gitlab需要安装的包太TM多了,源码安装能愁死个人,一直出错,后来发现几行命令就装的真是遇到的新大陆一样... ... 装完之后感觉太简单,加了汉化补丁 ...
- 有关于OpenGL、OpenGL ES、WebGL的小结
转自原文 有关于OpenGL.OpenGL ES.WebGL的小结 一. OpenGL简介 OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言.跨平台的编程接口 ...
- OpenGL第18,19,20讲小结
18讲是通过调用库函数画一些简单的二次几何体,比如球体.圆锥体.圆盘等等. 19讲简单的讲了下粒子系统.其实就是三角形贴上星星的纹理,通过启用混合(GL_BLEND)来达到一种动态的粒子效果.通过修改 ...
- OpenGL第15,16,17讲小结
这三讲没有什么特别的感觉,15讲把纹理贴到3D字体上,16讲讲了雾的生成,17讲是通过以事先保存好的纹理贴图的字体来显示2D文字,这样子不用调用windows的字体,而是使用纹理中的字体.这样也在一定 ...
随机推荐
- iOS开发——UI篇Swift篇&UIWebView
UIWebView //返回按钮事件 @IBAction func backButtonClick() { self.navigationController?.popViewControllerAn ...
- jQuery.validate的this.optional(element)作用
今天使用同事扩展jquery validate函数mobile验证时,require值传入false发现也会验证, 去掉mobile后就没这个问题,把mobile替换成自带的digits也没有这个问题 ...
- NServiceBus
官方网站:http://docs.particular.net/nservicebus/ NServiceBus 是一个用于构建企业级 .NET系统的开源通讯框架.它在消息发布/订阅支持.工 ...
- C#的System.ICloneable接口说明
System.ICloneable接口支持克隆,即用与现有实例相同的值创建类的新实例.msdn上的解释很简单,主要就是clone方法的实行,介绍深拷贝和浅拷贝,搞的很糊涂,那么到底是什么意思呢?看看下 ...
- 记录一下bing的图片 - 升级版冰糖葫芦
记录一下bing的图片 - 升级版冰糖葫芦
- 功能分解——Android下画分时图与k线图有感
最近工作极度繁忙,已经好久没有更新博客了,总感觉要是再不抽空总结总结点东西,分分钟就会被懒惰的状态给打到了.同时也希望同学们谨记,如果你已经决定要坚持某些正确的东西,比如背完某章单词,看一完本书抑或是 ...
- Good subsequence( RMQ+二分)
Description Give you a sequence of n numbers, and a number k you should find the max length of Good ...
- nodejs 安装 postgresql module
# npm -gd install node-gyp # export PATH=$PATH:/usr/local/pgsql/bin # npm -gd install pg for test: # ...
- centos下查看rpm包安装位置
1.如何安装rpm软件包 rpm -ivh your-package.rpm其中your-package.rpm是你要安装的rpm包的文件名,一般置于当前目录下. 2.如何卸载rpm软件包使用命令 r ...
- 正则转nfa:bug消除
正则到nfabug的解决方法 前面提到了这个bug,为了解决这个bug,我们必须在每次引用到一个假名的时候,都构建一个拷贝.现在假设我们遇到了一个假名,并得到了他的开始节点和结束节点,当前的难题就是构 ...