用OpenInventor实现的NeHe OpenGL教程-第四十五课

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
 
NeHe教程在这节课向我们介绍了OpenGL新的扩展“顶点缓存”(VBO),这种技术可以直接操作显卡,直接把顶点数据放置在显卡中的高速缓存中,极大的增加了OpenGL的绘制速度。对于使用Coin3D的用户来说,有一个非常好的消息,Coin3D内部自动支持VBO。当我们使用 SoIndexedFaceSet节点显示三角面时,Coin在内部缺省情况下就是使用VBO来显示的。因此VBO技术我们已经很早就在使用了。
 
下面的函数用来计算高程图中,某个位置对应的高度。计算方法和NeHe相同。
float PtHeight(AUX_RGBImageRec *pTextureImage, int nX, int nY )
 
下面的函数用来构建高程图场景。
SoSeparator* BuildHeightMapSep()
在这个函数中,我们只是简单使用 SoIndexedFaceSet节点来显示地图。没有任何显式地调用OpenGL VBO扩展函数。但Coin内部已经为我们使用了这种技术。
 
现在编译运行我们程序,屏幕会显示一个不断旋转的地图。读者可以比较一下OpenGL和OpenInventor两者之间的性能。OpenInventor的性能一点也不差! 。
 
 
本课的完整代码 下载。(VC 2003 + Coin2.5)
 
 
后记
OpenInventor是一种基于OpenGL的面向对象的三维图形软件开发包。使用这个开发包,程序员可以快速、简洁地开发出各种类型的交互式三维图形软件。这里不对OpenInventor做详细的介绍,读者如果感兴趣,可以阅读我的blog中的这篇文章《 OpenInventor 简介》。
 
NeHe教程是目前针对初学者来说最好的OpenGL教程,它可以带领读者由浅入深,循序渐进地掌握OpenGL编程技巧。到目前为止(2007年11月),NeHe教程一共有48节。我的计划是使用OpenInventor来实现所有48节课程同样的效果。目的是复习和巩固OpenGL的知识,同时与各位读者交流OpenInventor的使用技巧。
 
       因为篇幅的限制,我不会介绍NeHe教程中OpenGL的实现过程,因为NeHe的教程已经讲解的很清楚了,目前网络中也有NeHe的中文版本。我将使用VC 2003作为主要的编译器。程序框架采用和NeHe一样的Win32程序框架,不使用MFC。程序也可以在VC Express,VC 2005/2008中编译。我采用的OpenInventor开发环境是Coin,这是一个免费开源的OpenInventor开发库。文章 《 OpenInventor-Coin3D开发环境》 介绍了如何在VC中使用Coin。我使用的Coin版本是2.5。读者可以到 www.coin3d.org 中免费下载。
 
       读者可以在遵循GNU协议的条件下自由使用、修改本文的代码。水平的原因,代码可能不是最优化的,我随时期待读者的指正和交流。转载请注明。谢谢。
我的联系方式:
Open Inventor高级3D图形编程指南 Open Inventor是由SGI公司开发的一套强大的3D图形开发工具库,它是基于OpenGL之上构建的,为开发者提供了更高级的3D可视化功能。作为3D图形技术领域中的重要工具,Open Inventor具有跨平台、面向对象和易于使用的特点,使得3D图形程序的设计和开发变得更加高效和直观。在本章节中,我们将简要介绍Open Inventor的基本概念、核心功能和应用场景,为读者打下坚实的基础,以便在后续章节中深入探讨其面向对象编程的应用以及高级特性。 阅读详情

相关推荐

coid3d-the inventor mentor所有例子代码

本代码是The Inventor Mentor书中所有的例子代码。是从TGS公司发行的Open Inventor软件包中提取出来的。如果读者使用的是TGS公司发行的Open Inventor,可以直接从它的安装目录下找到这些例子代码,不必再使用本代码。本代码专门针对SIM公司发行的Coin3D Open Inventor作了修改,所以本代码只能编译,运行在Coin3D环境中。我们已经编译了Debug版本,即使读者没有安装Open Inventor开发环境,也可以直接运行例子程序。我们使用编译器是Microsoft Visual C++ 2003

webots自学笔记(七)通过定义顶点构件3D形状(IndexedFaceSet节点)

原创文章,来自“博客园,_阿龙clliu”http://www.cnblogs.com/clliu/,转载请注明原文章出处。 看到自己写的东西有人支持,也蛮欣慰的,所以顶着毕设的压力还是再更新一篇。 在webots中使用VRML语言建模,这个语言是比较老的了,确实没有现在的建模工具好用。这一次讲的是IndexedFaceSet节点,在VRML语言...

weixin_30535843的博客 485

open inventor从入门让你到精通书后代码

open inventor从入门让你到精通书后的全部代码,与原书完美匹配,可直接使用。

IndexedFaceSet节点

<br />IndexedFaceSet节点<br />IndexedFaceSet {  coordNULL # exposed field SFNodecoordIndex[ ]# MFInt32texCoord NULL# exposed field SFNodetexCoordIndex[ ]# MFInt32colorNULL# exposed field SFNodecolorIndex[ ]# MFInt32colorPerVertexTRUE# SFBoolnormalNULL# expos

Augusdi的专栏 3489

OpenInventor实现NeHe OpenGL教程-第十七

 用OpenInventor实现NeHe OpenGL教程-第十七         这节我们将讨论使用纹理贴的技术来显示文字。使用这种技术显示文字的好处在于程序的效果在任何机器上都是相同的。而我们前面讨论的显示文字的方法都是依赖于当前系统中所包含的字体,所以前面讨论的技术在不同的机器上有可能会有不同的显示效果。 使用纹理贴来显示文字的原理很简单,首先需要制作一

RobinHao的专栏 1811

OpenInventor实现NeHe OpenGL教程-第十

OpenInventor实现NeHe OpenGL教程-第十         这节我们将加载一个3D场景,并在这个场景中做自由漫游。读者将看到加载3D场景不是一件很难的事情,难点是3D场景的数据组织。不过这些是美工的事情,和我们程序员关系不大 ^_^ 。        在程序开始的部分我们新定义了一些变量,这些变量的作用和NeHe教程中定义的变量有相同的作用。SoTexture2*                 g_pTexture = NULL; //场景的纹理对象SoComplexity*  

Augusdi的专栏 1802

OpenInventor实现NeHe OpenGL教程-第一

OpenInventor实现NeHe OpenGL教程-第一        OpenInventor是一种基于OpenGL的面向对象的三维图形软件开发包。使用这个开发包,程序员可以快速、简洁地开发出各种类型的交互式三维图形软件。这里不对OpenInventor做详细的介绍,读者如果感兴趣,可以阅读我的blog中的这篇文章《OpenInventor 简介》。 NeHe教程是目前

RobinHao的专栏 5725

(VC++ 2003) Open Inventor Coin3D Nehe教程 代码

(VC++ 2003) Open Inventor Coin3D Nehe教程 代码

OpenInventor程序设计——从入门到精通源代码2

阎锋欣等编写OpenInventor程序设计——从入门到精通的源代码,由于只能上传小于20M的文件,所以我将整个源代码分为2次上传的。分别命名为:OpenInventor_code1.rar OpenInventor_code2.rar 其中OpenInventor_code1.rar包含第2章到第9章的代码示例; OpenInventor_code2.rar为第10章到15章的代码以及一些说明文档,解压后请查看文件:“光盘使用说明.doc”。

OpenInventor实现NeHe OpenGL教程-第三十

OpenInventor实现NeHe OpenGL教程-第三十         NeHe教程在这节介绍了碰撞检测。碰撞检测是一种比较复杂的技术。NeHe教程只是检测平面、球体、圆柱体等这些规则物体之间的碰撞检测。OpenInventor提供了任意形状物体之间的碰撞检测,当然这样的碰撞检测需要更多的计算时间。 碰撞检测的算法在NeHe教程中已经做了详尽的解释,我们就

RobinHao的专栏 3910

OpenInventor实现NeHe OpenGL教程-第十二

 用OpenInventor实现NeHe OpenGL教程-第十二         NeHe这节主要讨论OpenGL的显示列表功能。OpenGL的显示列表是加速OpenGL性能的一种重要的手段。但在OpenInventor中,我们根本就不需要关心是否使用显示列表,因为OpenInventor内部有缓存功能,而这个缓存功能就是使用显示列表来实现的。所以我们只需要实现程序逻辑

RobinHao的专栏 1912

OpenInventor实现NeHe OpenGL教程-第十六

 用OpenInventor实现NeHe OpenGL教程-第十六          这节我们将在前面讲述的第七节程的基础上,对场景增加上“雾 ”的效果。在OpenInventor中添加“雾 ”效果还是很容易的。OpenInventor提供了一个叫做SoEnvironment的节点类,通过这个节点类,我们就可以实现“雾 ”的效果。        下面的代码是在第

RobinHao的专栏 1492

OpenInventor实现NeHe OpenGL教程-第二十九

 用OpenInventor实现NeHe OpenGL教程-第二十九         NeHe教程在这节中介绍了如何把一块纹理贴到另一块纹理上(即多重纹理)。这节的内容不是很难,主要是如何读取raw数据格式文件,如何计算像的透明度等。 OpenInventor对多重纹理直接提供支持,所以我们也可以利用多重纹理来实现相同的效果。具体的代码见BuildCube2

RobinHao的专栏 3505

OpenInventor实现NeHe OpenGL教程-第四十八

 NeHe教程在这节向我们介绍了轨迹球技术。轨迹球技术可以让用户使用鼠标直接旋转物体,这是所有交互式3D软件必须提供的最基本的功能。NeHe教程提供的方法是在其它人的基础上做了一些修改和优化。但他的方法仍然有一些小的错误,例如,在将鼠标2D坐标位置映射到3D球体上时,他没有考虑透视因素,因此可能会稍微有些误差,不过对于一般应用来说已经足够用了。        Open Invento

RobinHao的专栏 5525
上一篇: 用OpenInventor实现的NeHe OpenGL教程-第四十四课
下一篇: 用OpenInventor实现的NeHe OpenGL教程-第四十六课
RobinHao
博客等级 码龄25年 234粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值