基本信息
- 原书名:Interactive Computer Graphics: A Top-Down Approach using OpenGL (4th Edition)
- 原出版社: Addison-Wesley
- 作者: (美)Edward Angel
- 丛书名: 国外计算机科学教材系列
- 出版社:电子工业出版社
- ISBN:9787121036835
- 上架时间:2007-1-23
- 出版日期:2007 年1月
- 开本:16开
- 页码:784
- 版次:4-1
- 所属分类:计算机 > 计算机科学理论与基础知识 > 图形学
计算机 > 图形图像、多媒体、网页制作 > OpenGL
教材 > 研究生/本科/专科教材 > 工学 > 计算机
教材 > 计算机教材 > 本科/研究生 > 计算机专业教材 > 计算机专业课程 > 图形图象与网页设计
内容简介
计算机书籍
本书是介绍计算机图形学的一本入门性教材,着重强调了图形学的应用编程。书中从OpenGL编程的角度,讨论了图形学的基本原理和基本算法。具体介绍了三维图形程序的开发环境、三维对象的表示方法、空间坐标变换、三维视图的生成过程等内容。并且探讨了光栅扫描、区域填充、画直线和画圆弧、裁剪及消隐等基本理论和基本算法。此外,涵盖了过程建模技术、可视化处理方法以及高级绘制方法等高层次主题。本书的特点是采用自顶向下方法,综合了知识性和实用性。多个完整而又灵活的OpenGL程序更有助于读者加深理解。.
本书可作为计算机及相关专业本科生和研究生的计算机图形学教材,也适于作为相关程序员、工程技术人员及科研人员的参考书。...
作译者
目录
1.1 Applications of Computer Graphics
1.1.1 Displayof Information 2
1.1.2 Design 3
1.1.3 Simulation and Animation 3
1.1.4 User Interfaces 4
1.2 A Graphics System
1.2.1 Pixelsand the Frame Buffer 6
1.2.2 Output Devices 7
1.2.3 Input Devices 10
1.3 Images: Physical and Synthetic
1.3.1 Objects and Viewers 11
1.3.2 Light and Images 12
1.3.3 Imaging Models 14
1.4 Imaging Systems
1.4.1 The Pinhole Camera 16
1.4.2 The Human Visual System 18
1.5 The Synthetic-Camera Model
1.6 The Programmer's Interface
1.6.1 The Pen-Plotter Model 22
前言
Not only have graphics capabilities increased but costs have been reduced for both high- and low-end workstations. Within the last few years the cost of a graphics system that can generate over ten million three-dimensional polygons per second with lighting and texture mapping has gone from over $100,000 to less than $1000. The availability of special-purpose graphics boards for personal computers has been especially significant. These boards provide support for sophisticated three-dimensional applications, starting at about $100. On the software side, OpenGL remains the standard programmer's interface both for writing application programs and developing high-level products in the scientific community.
A Top-Down Approach These recent advances and the success of the first three editions have reinforced my belief in a top-down, programming-oriented approach to introductory computer graphics. Although many computer science and engineering departments now support more than one course in the subject, most students will take only a single course. Such a course is placed in the curriculum after students have already studied programming, data structures, algorithms, software engineering, and basic mathematics. A class in computer graphics allows the instructor to build on thesc topics in a way that can be both informative and fun. I want these students to be programming three-dimensional applications as soon as possible. Low-level algorithms, such as those that draw lines or fill polygons, can be dealt with later, after students are creating graphics.
John Kemeny, a pioneer in computer education, used a familiar automobile analogy: You don't have to know what's under the hood to be literate, but unless you know how to program, you'll be sitting in the back seat instead of driving. That same analogy applies to the way we teach computer graphics. One approach--the algorithmic approach--is to teach everything about what makes a car function: the engine, the transmission, the combustion process. A second approach--the survey approach--is to hire a chauffeur, sit back, and see the world as a spectator. The third approach--the programming approach that I have adopted here--is to teach you how to drive and how to take yourself wherever you want to go. As the old auto-rental commercial used to say, "Let us put you in the driver's seat."
Programming with OpenGL and C..
When I began teaching computer graphics 20 years ago, the greatest impediment to implementing a programming-oriented course, and to writing a textbook for that course, was the lack of a widely accepted graphics library or application programmer's interface (API). Difficulties included high cost, limited availability, lack of generality, and high complexity. The development of OpenGL resolved most of the difficulties many of us had experienced with other APIs (such as GKS and PHIGS) and with the,alternative of using home-brewed software. OpenGL today is supported by most workstafon suppliers and is available for most platforms through third-party vendors. It is bundled with all recent versions of Microsoft Windows and with the Apple Macintosh Operating System. There is also an OpenGL AP1 called Mesa that is included with most Linux distributions.
A graphics class teaches far more than the use of a particular API, but a good APl makes it easier to teach key graphics topics, such as three-dimensional graphles, shading, client-server graphics, modeling, and implementation algorithms. I believe that OpenGL's extensive capabilities and well-defined architecture lead to a stronger foundation for teaching both theoretical and practical aspects of the field and for teaching important new capabilities, such as texture mapping, and compositing, that until recently were not supported in any APl.
I switched my classes to OpenGL about 12 years ago, and the results astounded me. By the middle of the scmcstcr, every student was able to write a moderately complex three-dimensional program that required understanding of three-dimensional viewing and event-driven input. In 15 years of teaching computer graphics, I had never come even close to this result. That class led me to rewrite my previous book from scratch.
This book is a textbook on computer graphics; it is not an OpenGL manual Consequently, I do not cover all aspects of the OpenGL APl but rather explain only what is necessary for mastering this book's contents. I present OpenGl at a level that should permit users of other APls to have little difficulty with the material. For students who want more detail on OpenGL, my recent book OpenGL:A Primer, Second Edition, (Addison-Wesley 2004) should be a valuable supplement.
In this edition, I use both C and C++, with C as the dominant language. There are two reasons for this decision. First, OpenGL is not object-oriented, so using C++ or Java would not add significantly to the basic presentation, unless I were to insert an object-oriented geometric library between OpcnGL and the user. Ihave not taken this step, despite its appealing features, because it would detract from the graphics and would make the book less accessible to students who are good programmers but unfamiliar with object-oriented languages. Second, my experience has been that object-oriented approaches shield the user from what is going on inside (as they should), whereas in an introduction to compputer graphics, I want readers to be aware of what is happening at the lowest levels. Although the use of computer graphics is a wonderful way to introduce students to object-oriented programming, in my view, an object-oriented approach is not the most effective way to teach graphics to computer science and engineering students. Thc exception to this view is when I introduce scene graphs which are object oriented and benefit from the usc of C++. My undergraduate students use Java and C in their beginning courses but have no difficulty in using the code in this book with either C or C++...
Within the computer graphics community, there has been much discussion of the future of OpenGL and whether it will be replaced by DirectX. Among computer graphics educators, however, there is little doubt that OpenGL will continue to be the APl of choice for their classes. Although DirectX is the standard for game development, in the opinion of many of us, it is not well suited for teaching computer graphics, nor for users who want to develop their own applications. In addition to being specific to Windows platforms, DirectX requires far more code for basic portable applications. At the higher levels, OpenGL and DirectX support similar functionality in similar ways. Hence, users of this book should be able to move to DirectX with little difficulty when required.
Intended Audience
This book is suitable for advanced undergraduates and first-year graduate students in computer science and engineering and for students in other disciplines who have good programming skills. The book also will be useful to many professionals. I have taught approximately 100 short courses for professionals; my experiences with those students have had a great influence on what I have chosen to include in the book.
Prerequisites for the book are good programming skills in C or C++, an understanding of basic data structures (linked lists, trees), and a rudimentary knowledge of linear algebra and trigonometry. I have found that the mathematical backgrounds of computer science students, whether of undergraduates or of graduates, vary considerably. Hence, I have chosen to integrate into the text much of the linear algebra and geometry that is required for fundamental computer graphics. I have also summarized this material in Appendices B and C.
Organization of the Book
The book is organized as follows. Chapter i overviews thc field and introduces image formation by optical devices; thus, we start with three-dimensional concepts immediately. Chapter 2 introduces programming using OpenGL. Although the first example program that we develop--each chapter has one or more complete programming examples--is two-dimensional, it is embedded in a three-dimensional setting and leads to a three-dimensional extension. In Chapter 3, we discuss interactive graphics in a modern client-server setting and develop event-driven graphics programs. Chapters 4 and 5 concentrate on three dimensional concepts; Chapter 4 is concerned with defining and manipulating three-dimensional objects, whereas Chapter 5 is concerned with viewing them. Chapter 6 introduces light-material interactions and shading. These chapters should be covcrcd in ordcr and can be donc in about 10 weeks ofa 15-week semester.
The next six chapters can be read in almost any order. All six are somewhat open endcd and can be covercd at a survey level, or individual topics can be pursued in depth. Chapter 7 survcys rasterization. It gives onc or two major algorithms for each of thc basic steps, including clipping, line gcneration, and polygon fill. Chaptcr 8 introduces many of the new discrctc capabilities that are now supported in graphics hardware and by OpenGL. All these techniques involve working with various buffers. It concludes with a short discussion of aliasing problems in computer graphics. Chapter 9 is an introduction to programmable shaders using thc OpenGL Shading Language (GLSL), which is now a standard part of OpenGL. Wc usc programmable shaders to develop techniques, such as bump mapping, that can now be done in real time. Chaptcrs 8 and 9 conclude thc discussion of thc standard viewing pipeline used by all interactive graphics systems.
Chaptcr 10 contains a numbcr of topics that fit loosely under the heading of modeling. The topics range from building models that encapsulate the relationships between the parts of a model, to high-level approaches to graphics over the Internet, to procedural methods. It includes a simple scene graph API. Curves and surfaces, including subdivision surfaccs, are discussed in Chapter 11. Chapter 12 surveys alternate approaches to rendering. It includes expanded discussions of ray tracing and radiosity and an introduction to imagc-based rendering and parallel rendering.
Programs, primarily from the first part of the book, are included in Appendix A. They are also available online (see Support Materials). Appendices B and C contain a review of the background mathematics. Appendix D is new and contains a synopsis of the OpenGL functions used in the book.
Changes from the Third Edition