OpenGL超级宝典笔记7


第十二章 交互式图形

学习使用选择和反馈,这两个都是OpenGL的强大特性,它们能够让用户与场景进行交互。选择和挑选用于在场景中的某个区域中确认一个物体,它所使用的是OpenGL坐标而不是窗口坐标。反馈返回在窗口中实际绘制图元的宝贵信息。

a) 选择 实际上是一种渲染模式,但在选择模式下,像素并没有被实际复制到帧缓冲区。反之,在可视区中绘制的图元将在一个选择缓冲区中产生点记录。通常做法是为一组图元命名,在选择模式下出现一次点击事件,就把名字压入栈中。选择模式:glRenderMode(GL_SELECTION);还有另外两种模式:GL_FEEDBACKGL_RENDER模式。

b) 挑选 使用选择时,当我们根据鼠标位置创建和使用一个经过修改的可视区域时,就会产生挑选事件。glPickMatrix函数用于创建一个矩阵,描述新的可视区域。首先保存可视化区域,然后把渲染模式切换到选择模式,对可视区域进行修改,只包含鼠标下面的区域,并调用RenderScene函数对场景进行重绘。在场景进行重绘之后,我们再次调用glRenderScene函数把OpenGL恢复为正常的渲染模式,并获取所产生的点击记录的数量。

c) 反馈 和选择一样也是一种渲染模式,将信息写入到反馈缓冲区中,提示场景将如何被渲染。这信息包括了用窗口坐标表示的经过转换的顶点数据、根据光照计算产生的颜色数据以及纹理数据。反馈缓冲区是一个浮点值数组,它是用glFeedback函数指定的。反馈缓冲区包含了一个标记列表,接着是顶点数据以及可能出现的颜色和纹理数据。

 

第十三章 遮挡查询,消除不必要的工作

在渲染复杂的场景时,我们有时候会渲染一些实际上不可见的东西,从而浪费硬件资源。通过在物体四周绘制一个边框,或其他一些简单的边界区域。我们可以在付出很低代价的情况下知道物体在场景中的大致边界。如果场景中的遮挡物隐藏了这个边框,它也将遮挡实际的物体。通过对一个物体的边框进行查询,我们可以计算需要绘制多少像素。

a) 边框 遮挡检测背后的理论是:如果一个物体的边界区域(bounding volume)并不可见,那么这个物体也不可见。最简单的边界区域是立方体,又称边框。它由8个顶点、6个面组成。

b) 对查询对象进行查询 依次对每个物体的查询对象进行检查,并决定是否绘制这个球体。.调用glGetQueryObjectiv函数来判断那个表示通过测试的计数器的值是否为0,如果是就不需要绘制这个物体。

c) 最佳实践 首先绘制遮挡物,然后在场景中有条件地绘制剩余的物体。如果程序允许,应该按照从前向后的顺序对被遮挡物进行排序。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
中文名: openGL超级宝典(第四版)及代码 英文名: OpenGL SuperBible (4th Edition) 版本: [PDF] 发行日期: 2007年06月28日 地区: 美国 对白语言: 英语 简介: 原书名:OpenGL SuperBible (4th Edition) 作者:Richard S. Wright, Jr. 出版社:Addison Wesley 页码: 1262 版次:4 丛书名: OpenGL SuperBible 出版日期: 2007-6-28 官方网站:http://www.starstonesoftware.com/OpenGL/ 本书是OpenGL编程指南,涵盖了使用新版本的OpenGL进行编程所需要的主要知识。 全书分3个部分,共23章,另有3个附录。第一部介绍经典OpenGL绘图的所有基础知识,包括3D图形和OpenGL简介, OpenGL空间绘图,几何转换,颜色、材料和光照,纹理贴图,曲线和表面,管线,交互式图形等内容。第二部分是着重介绍OpenGL的一些高级功能。第三部分别介绍了不同操作系统平台上的OpenGL功能特性和编程细节。 本书适合于希望精通OpenGL以便对他们的图形编程和3D图形知识进行扩展的程序员,也可以帮助那些经验丰富的OpenGL程序员学习如何移植自己的应用程序。本书既可以作为学习OpenGL的教材,也可以作为随时查阅的参考手册。 第二个文件是书里面代码 Editorial Reviews Product Description OpenGL ® SuperBible, Fourth Edition, begins by illuminating the core techniques of “classic” OpenGL graphics programming, from drawing in space to geometric transformations, from lighting to texture mapping. The authors cover newer OpenGL capabilities, including OpenGL 2.1’s powerful programmable pipeline, vertex and fragment shaders, and advanced buffers. They also present thorough, up-to-date introductions to OpenGL implementations on multiple platforms, including Windows, Mac OS X, GNU/Linux, UNIX, and embedded systems. Coverage includes · An entirely new chapter on OpenGL ES programming for handhelds · Completely rewritten chapters on OpenGL for Mac OS X and GNU/Linux · Up-to-the-minute coverage of OpenGL on Windows Vista · New material on floating-point color buffers and off-screen rendering · In-depth introductions to 3D modeling and object composition · Expert techniques for utilizing OpenGL’s programmable shading language · Thorough coverage of curves, surfaces, interactive graphics, textures, shadows, and much more · A fully updated API reference, and an all-new section of full-color images You’ll rely on this book constantly–whether you’re learning OpenGL for the first time, deepening your graphics programming expertise, upgrading from older versions of OpenGL, or porting applications from other environments. Now part of the OpenGL Technical Library–The official knowledge resource for OpenGL developers The OpenGL Technical Library provides tutorial and reference books for OpenGL. The Library enables programmers to gain a practical understanding of OpenGL and shows them how to unlock its full potential. Originally developed by SGI, the Library continues to evolve under the auspices of the OpenGL Architecture Review Board (ARB) Steering Group (now part of the Khronos Group), an industry consortium responsible for guiding the evolution of OpenGL and related technologies. Contents Preface xxvii About the Authors xxxv Introduction 1 Part I: The Old Testament Chapter 1 Introduction to 3D Graphics and OpenGL 9 Chapter 2 Using OpenGL 33 Chapter 3 Drawing in Space: Geometric Primitives and Buffers 73 Chapter 4 Geometric Transformations: The Pipeline 127 Chapter 5 Color, Materials, and Lighting: The Basics 173 Chapter 6 More on Colors and Materials 229 Chapter 7 Imaging with OpenGL 251 Chapter 8 Texture Mapping: The Basics 303 Chapter 9 Texture Mapping: Beyond the Basics 341 Chapter 10 Curves and Surfaces 377 Chapter 11 It’s All About the Pipeline: Faster Geometry Throughput 421 Chapter 12 Interactive Graphics 457 Chapter 13 Occlusion Queries: Why Do More Work Than You Need To? 481 Chapter 14 Depth Textures and Shadows 495 Part II: The New Testament Chapter 15 Programmable Pipeline: This Isn’t Your Father’s OpenGL 515 Chapter 16 Vertex Shading: Do-It-Yourself Transform, Lighting, and Texgen 547 Chapter 17 Fragment Shading: Empower Your Pixel Processing 567 Chapter 18 Advanced Buffers 601 Part III: The Apocrypha Chapter 19 Wiggle: OpenGL on Windows 641 Chapter 20 OpenGL on Mac OS X 685 Chapter 21 OpenGL on Linux 713 Chapter 22 OpenGL ES — OpenGL on the Small 735 Appendix A Further Reading/References 773 Appendix B Glossary 777 Appendix C API Reference 783 Index 1141 About the Author Richard S. Wright, Jr.has been using OpenGL for more than 12 years, since it first became available on the Windows platform, and teaches OpenGL programming in the game design degree program at Full Sail in Orlando, Florida. Currently, Richard is the president of Starstone Software Systems, Inc., where he develops third-party multimedia simulation software for the PC and Macintosh platforms using OpenGL. Previously with Real 3D/Lockheed Martin, Richard was a regular OpenGL ARB attendee and contributed to the OpenGL 1.2 specification and conformance tests. Since then, Richard has worked in multidimensional database visualization, game development, medical diagnostic visualization, and astronomical space simulation. Richard first learned to program in the eighth grade in 1978 on a paper terminal. At age 16, his parents let him buy a computer with his grass-cutting money instead of a car, and he sold his first computer program less than a year later (and it was a graphics program!). When he graduated from high school, his first job was teaching programming and computer literacy for a local consumer education company. He studied electrical engineering and computer science at the University of Louisville’s Speed Scientific School and made it half way through his senior year before his career got the best of him and took him to Florida. A native of Louisville, Kentucky, he now lives with his wife and three children in Lake Mary, Florida. When not programming or dodging hurricanes, Richard is an avid amateur astronomer and an Adult Sunday School teacher. Benjamin Lipchak graduated from Worcester Polytechnic Institute with a double major in technical writing and computer science. “Why would anyone with a CS degree want to become a writer?” That was the question asked of him one fateful morning when Benj was interviewing for a tech writing job at Digital Equipment Corporation. Benj’s interview took longer than scheduled, and he left that day with job offer in hand to work on the software team responsible for DEC’s AlphaStation OpenGL drivers. Benj’s participation in the OpenGL Architecture Review Board began when he chaired the working group that generated the GL_ARB_fragment_program extension spec. While chairing the Khronos OpenGL Ecosystem Technical SubGroup, he established the OpenGL SDK and created the OpenGL Pipeline newsletter, of which he remains editor. Benj will now participate in the Khronos OpenGL ES Working Group. After 12 years of OpenGL driver development and driver team management at DEC, Compaq, and ATI, he is headed for smaller pastures. Benj recently became manager of AMD’s handheld software team. Although the API is familiar, the new challenges of size and power consumption make for a great change of scenery. In his fleeting spare time, Benj tries to get outdoors for some hiking or kayaking. He also operates an independent record label, Wachusett Records, specializing in solo piano music. Nicholas Haemel, developer at AMD in the Graphics Products Group, was technical reviewer for OpenGL SuperBible, Third Edition, and contributed the chapters on GLX and OpenGL ES

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值