100% found this document useful (7 votes)
10K views

Full Computer Graphics Programming in OpenGL With Java 2nd Edition V. Scott Gordon PDF All Chapters

Gordon

Uploaded by

mivrarodas
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (7 votes)
10K views

Full Computer Graphics Programming in OpenGL With Java 2nd Edition V. Scott Gordon PDF All Chapters

Gordon

Uploaded by

mivrarodas
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 62

Download the full version of the textbook now at textbookfull.

com

Computer Graphics Programming in OpenGL with


Java 2nd Edition V. Scott Gordon

https://textbookfull.com/product/computer-
graphics-programming-in-opengl-with-java-2nd-
edition-v-scott-gordon/

Explore and download more textbook at https://textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

Computer Graphics Programming in OpenGL with Java Gordon

https://textbookfull.com/product/computer-graphics-programming-in-
opengl-with-java-gordon/

textbookfull.com

Computer Graphics Programming in OpenGL Using C++, Third


Edition Gordon Phd

https://textbookfull.com/product/computer-graphics-programming-in-
opengl-using-c-third-edition-gordon-phd/

textbookfull.com

Computer graphics through openGL Third Edition Guha

https://textbookfull.com/product/computer-graphics-through-opengl-
third-edition-guha/

textbookfull.com

The Medical Checkup Book: Understand The Tests You Need to


Keep Your Body and Mind Healthy 1st Edition Dk

https://textbookfull.com/product/the-medical-checkup-book-understand-
the-tests-you-need-to-keep-your-body-and-mind-healthy-1st-edition-dk/

textbookfull.com
EU US Cooperation on Internal Security Building a
Transatlantic Regime 1st Edition Dimitrios Anagnostakis

https://textbookfull.com/product/eu-us-cooperation-on-internal-
security-building-a-transatlantic-regime-1st-edition-dimitrios-
anagnostakis/
textbookfull.com

Republic F 105 Thunderchief 1st Edition Peter E Davies

https://textbookfull.com/product/republic-f-105-thunderchief-1st-
edition-peter-e-davies-2/

textbookfull.com

Cache and Interconnect Architectures in Multiprocessors


Michel Dubois Shreekant S Thakkar

https://textbookfull.com/product/cache-and-interconnect-architectures-
in-multiprocessors-michel-dubois-shreekant-s-thakkar/

textbookfull.com

Lonely Planet Best of Japan Lonely Planet

https://textbookfull.com/product/lonely-planet-best-of-japan-lonely-
planet/

textbookfull.com

Mathematical Modeling of Mitochondrial Swelling Messoud


Efendiev

https://textbookfull.com/product/mathematical-modeling-of-
mitochondrial-swelling-messoud-efendiev/

textbookfull.com
Blended Learning Designs in STEM Higher Education Putting
Learning First Christopher N. Allan

https://textbookfull.com/product/blended-learning-designs-in-stem-
higher-education-putting-learning-first-christopher-n-allan/

textbookfull.com
Computer Graphics
Programming in OpenGL
with Java
Second Edition

CGP_Java2E_CH00-2nd-Pass.indd 1 07-09-2018 11:16:11


LICENSE, DISCLAIMER OF LIABILITY, AND LIMITED WARRANTY

By purchasing or using this book and its companion files (the “Work”), you agree
that this license grants permission to use the contents contained herein, but does
not give you the right of ownership to any of the textual content in the book or
ownership to any of the information or products contained in it. This license does
not permit uploading of the Work onto the Internet or on a network (of any kind)
without the written consent of the Publisher. Duplication or dissemination of any
text, code, simulations, images, etc. contained herein is limited to and subject to
licensing terms for the respective products, and permission must be obtained from
the Publisher or the owner of the content, etc., in order to reproduce or network any
portion of the textual material (in any media) that is contained in the Work.

Mercury Learning and Information (“MLI” or “the Publisher”) and anyone


involved in the creation, writing, or production of the companion disc,
accompanying algorithms, code, or computer programs (“the software”), and any
accompanying Web site or software of the Work, cannot and do not warrant the
performance or results that might be obtained by using the contents of the Work.
The author, developers, and the Publisher have used their best efforts to insure
the accuracy and functionality of the textual material and/or programs contained
in this package; we, however, make no warranty of any kind, express or implied,
regarding the performance of these contents or programs. The Work is sold “as is”
without warranty (except for defective materials used in manufacturing the book
or due to faulty workmanship).

The author, developers, and the publisher of any accompanying content, and anyone
involved in the composition, production, and manufacturing of this work will not
be liable for damages of any kind arising out of the use of (or the inability to use)
the algorithms, source code, computer programs, or textual material contained in
this publication. This includes, but is not limited to, loss of revenue or profit, or
other incidental, physical, or consequential damages arising out of the use of this
Work.

The sole remedy in the event of a claim of any kind is expressly limited to
replacement of the book and disc and only at the discretion of the Publisher. The
use of “implied warranty” and certain “exclusions” vary from state to state, and
might not apply to the purchaser of this product.

Companion files are available for download from the publisher by writing to
[email protected].

CGP_Java2E_CH00-2nd-Pass.indd 2 07-09-2018 11:16:12


Computer Graphics
Programming in OpenGL
with Java
Second Edition

V. Scott Gordon, PhD


California State University, Sacramento

John Clevenger, PhD


California State University, Sacramento

Mercury Learning and Information


Dulles, Virginia
Boston, Massachusetts
New Delhi

CGP_Java2E_CH00-2nd-Pass.indd 3 07-09-2018 11:16:12


Copyright ©2019 by Mercury Learning and inforMation LLC. All rights reserved.

This publication, portions of it, or any accompanying software may not be reproduced in any way,
stored in a retrieval system of any type, or transmitted by any means, media, electronic display or
mechanical display, including, but not limited to, photocopy, recording, Internet postings, or scan­
ning, without prior permission in writing from the publisher.

Publisher: David Pallai

Mercury Learning and inforMation


22841 Quicksilver Drive
Dulles, VA 20166
[email protected]
www.merclearning.com
(800) 232-0223

V. Scott Gordon & John Clevenger.


Computer Graphics Programming in OpenGL with Java, Second Edition
ISBN: 978-1-683922-19-3

The publisher recognizes and respects all marks used by companies, manufacturers, and
developers as a means to distinguish their products. All brand names and product names mentioned
in this book are trademarks or service marks of their respective companies. Any omission or misuse
(of any kind) of service marks or trademarks, etc. is not an attempt to infringe on the property
of others.

Library of Congress Control Number: 2018949984

181920321 Printed on acid-free paper in the United States of America.

Our titles are available for adoption, license, or bulk purchase by institutions, corporations, etc.
For additional information, please contact the Customer Service Dept. at 800-232-0223 (toll free).
Digital versions of our titles are available at: www.authorcloudware.com and other e-vendors. All
companion files are available by writing to the publisher at [email protected].

The sole obligation of Mercury Learning and inforMation to the purchaser is to replace the book
and/or disc, based on defective materials or faulty workmanship, but not based on the operation or
functionality of the product.

Books for programmers


CGP_Java2E_CH00-2nd-Pass.indd 4 07-09-2018 11:16:12
Contents
Preface xi
What’s New in This Edition xiii
Intended Audience xiv
How to Use This Book xv
Acknowledgments xvii
About the Authors xix

Chapter 1 Getting Started 1


1.1 Languages and Libraries 1
1.1.1 Java 2
1.1.2 OpenGL / GLSL 2
1.1.3 JOGL 3
1.1.4 JOML 3
1.2 Installation and Configuration 4

Chapter 2 The OpenGL Graphics Pipeline 5


2.1 The OpenGL Pipeline 6
2.1.1 Java/JOGL Application 7
2.1.2 Vertex and Fragment Shaders 10
2.1.3 Tessellation 15
2.1.4 Geometry Shader 16
2.1.5 Rasterization 17
2.1.6 Fragment Shader 19
2.1.7 Pixel Operations 20

CGP_Java2E_CH00-2nd-Pass.indd 5 07-09-2018 11:16:12


vi ■ C o n ten ts

2.2 Detecting OpenGL and GLSL Errors 21


2.3 Reading GLSL Source Code from Files 26
2.4 Building Objects from Vertices 27
2.5 Animating a Scene 28
2.6 Organizing the Java Code Files 32

Chapter 3 Mathematical Foundations 37


3.1 3D Coordinate Systems 38
3.2 Points 38
3.3 Matrices 39
3.4 Transformation Matrices 42
3.4.1 Translation 42
3.4.2 Scaling 43
3.4.3 Rotation 44
3.5 Vectors 45
3.5.1 Uses for Dot Product 47
3.5.2 Uses for Cross Product 48
3.6 Local and World Space 49
3.7 Eye Space and the Synthetic Camera 50
3.8 Projection Matrices 53
3.8.1 The Perspective Projection Matrix 53
3.8.2 The Orthographic Projection Matrix 56
3.9 Look-At Matrix 57
3.10 GLSL Functions for Building Matrix Transforms 58

Chapter 4 Managing 3D Graphics Data 63


4.1 Buffers and Vertex Attributes 64
4.2 Uniform Variables 67
4.3 Interpolation of Vertex Attributes 68
4.4 Model-View and Perspective Matrices 69
4.5 Our First 3D Program—A 3D Cube 71
4.6 Rendering Multiple Copies of an Object 80
4.6.1 Instancing 81
4.7 Rendering Multiple Different Models in a Scene 84
4.8 Matrix Stacks 87
4.9 Combating “Z-Fighting” Artifacts 94
4.10 Other Options for Primitives 95
4.11 Coding for Performance 97
4.11.1 Minimizing Dynamic Memory Allocation 97

CGP_Java2E_CH00-2nd-Pass.indd 6 07-09-2018 11:16:12


C onte nts ■ vii

4.11.2 Pre-Computing the Perspective Matrix 99


4.11.3 Back-Face Culling 100

Chapter 5 Texture Mapping 107


5.1 Loading Texture Image Files 108
5.2 Texture Coordinates 110
5.3 Creating a Texture Object 112
5.4 Constructing Texture Coordinates 112
5.5 Loading Texture Coordinates into Buffers 114
5.6 Using the Texture in a Shader: Sampler Variables and Texture Units 114
5.7 Texture Mapping: Example Program 115
5.8 Mipmapping 118
5.9 Anisotropic Filtering 123
5.10 Wrapping and Tiling 124
5.11 Perspective Distortion 126
5.12 Loading Texture Image Files Using Java AWT Classes 128

Chapter 6 3D Models 133


6.1 Procedural Models—Building a Sphere 134
6.2 OpenGL Indexing—Building a Torus 142
6.2.1 The Torus 142
6.2.2 Indexing in OpenGL 143
6.3 Loading Externally Produced Models 148

Chapter 7 Lighting 161


7.1 Lighting Models 161
7.2 Lights 163
7.3 Materials 166
7.4 ADS Lighting Computations 168
7.5 Implementing ADS Lighting 171
7.5.1 Gouraud Shading 172
7.5.2 Phong Shading 180
7.6 Combining Lighting and Textures 185

Chapter 8 Shadows 191


8.1 The Importance of Shadows 191
8.2 Projective Shadows 192
8.3 Shadow Volumes 193

CGP_Java2E_CH00-2nd-Pass.indd 7 07-09-2018 11:16:12


viii ■ Co n te n ts

8.4 Shadow Mapping 194


8.4.1 Shadow Mapping (Pass One)—“Draw” Objects from
Light Position 195
8.4.2 Shadow Mapping (Intermediate Step)—Copying the
Z-Buffer to a Texture 196
8.4.3 Shadow Mapping (Pass Two)—Rendering the Scene with
Shadows 197
8.5 A Shadow Mapping Example 201
8.6 Shadow Mapping Artifacts 208
8.7 Soft Shadows 210
8.7.1 Soft Shadows in the Real World 211
8.7.2 Generating Soft Shadows—Percentage Closer Filtering (PCF) 212
8.7.3 A Soft Shadow/PCF Program 216

Chapter 9 Sky and Backgrounds 221


9.1 Skyboxes 221
9.2 Skydomes 224
9.3 Implementing a Skybox 226
9.3.1 Building a Skybox from Scratch 226
9.3.2 Using OpenGL Cube Maps 229
9.4 Environment Mapping 234

Chapter 10 Enhancing Surface Detail 243


10.1 Bump Mapping 243
10.2 Normal Mapping 245
10.3 Height Mapping 254

Chapter 11 Parametric Surfaces 261


11.1 Quadratic Bézier Curves 261
11.2 Cubic Bézier Curves 263
11.3 Quadratic Bézier Surfaces 266
11.4 Cubic Bézier Surfaces 268

Chapter 12 Tessellation 273


12.1 Tessellation in OpenGL 273
12.2 Tessellation for Bézier Surfaces 279
12.3 Tessellation for Terrain/Height Maps 286
12.4 Controlling Level of Detail (LOD) 293

CGP_Java2E_CH00-2nd-Pass.indd 8 07-09-2018 11:16:12


C onte nts ■ ix

Chapter 13 Geometry Shaders 299


13.1 Per-Primitive Processing in OpenGL 299
13.2 Altering Primitives 301
13.3 Deleting Primitives 305
13.4 Adding Primitives 306
13.5 Changing Primitive Types 309

Chapter 14 Other Techniques 313


14.1 Fog 313
14.2 Compositing/Blending/Transparency 316
14.3 User-Defined Clipping Planes 322
14.4 3D Textures 324
14.5 Noise 330
14.6 Noise Application—Marble 335
14.7 Noise Application—Wood 339
14.8 Noise Application—Clouds 342
14.9 Noise Application—Special Effects 347

Appendix A Installation and Setup for PC (Windows) 353


Appendix B Installation and Setup for Macintosh 357
Appendix C Using the Nsight Graphics Debugger 363

Index 371

CGP_Java2E_CH00-2nd-Pass.indd 9 07-09-2018 11:16:12


Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
CGP_Java2E_CH00-2nd-Pass.indd 10 07-09-2018 11:16:12
Preface
This book is designed primarily as a textbook for a typical computer science undergradu-
ate course in OpenGL 3D graphics programming. However, we have also endeavored to
create a text that could be used to teach oneself, without an accompanying course. With
both of those aims in mind, we have tried to explain things as clearly and simply as we
can. Every programming example is stripped down and simplified as much as possible,
but still complete so that the reader may run them all as presented.

One of the things that we hope is unique about this book is that we have strived to make
it accessible to a beginner—that is, someone new to 3D graphics programming. While
there is by no means a lack of information available on the topic—quite the ­contrary—
many students are initially overwhelmed. This text is our attempt to write the book we
wish we had had when we were starting out, with step-by-step explanations of the basics,
progressing in an organized manner up through advanced topics. We considered titling
the book Shader Programming Made Easy; however, we don’t think that there really is
any way of making shader programming “easy.” We hope that we have come close.

This book teaches OpenGL programming in Java, using JOGL—a Java “wrapper”
for OpenGL’s native C calls [JO16]. There are several advantages to learning graphics
programming in Java rather than in C:
• It is more convenient for students at schools that conduct most of their curriculum
in Java.
• Java’s I/O, window, and event handling are arguably cleaner than in C.
• Java’s excellent support for object-oriented design patterns can foster good ­design.
• JOGL includes some very nice tools, such as for loading textures, animation
loops, etc.

CGP_Java2E_CH00-2nd-Pass.indd 11 07-09-2018 11:16:12


xii ■ Pr e fa c e

It is worth mentioning that there do exist other Java bindings for OpenGL. One that
has become very popular is Lightweight Java Game Library, or LWJGL [LW16]. Like
JOGL, LWJGL also offers bindings for OpenAL and OpenCL. This textbook focuses
only on JOGL.

Another thing that makes this book unique is that it has a “sister” textbook: Computer
Graphics Programming in OpenGL with C++. The two books are organized in lockstep,
with the same chapter and section numbers and topics, figures, exercises, and theoretical
descriptions. Wherever possible, the code is organized similarly. Of course, the use of
Java versus C++ leads to considerable programming differences. Still, we believe that we
have provided virtually identical learning paths, even allowing a student to choose either
option within a single classroom.

An important point of clarification is that there exist both different versions of OpenGL
(briefly discussed later) and different variants of OpenGL. For example, in addition to
“standard OpenGL” (sometimes called “desktop OpenGL”), there exists a variant called
“OpenGL ES” which is tailored for development of embedded systems (hence the “ES”).
“Embedded systems” include devices such as mobile phones, game consoles, automo-
biles, and industrial control systems. OpenGL ES is mostly a subset of standard OpenGL,
eliminating a large number of operations that are typically not needed for embedded sys-
tems. OpenGL ES also adds some additional functionality, typically application-specific
operations for particular target environments. The JOGL suite of Java bindings includes
interfaces for different versions of OpenGL ES, although we do not use them in this book.

Yet another variant of OpenGL is called “WebGL.” Based on OpenGL ES, WebGL is
designed to support the use of OpenGL in web browsers. WebGL allows an application to
use JavaScript1 to invoke OpenGL ES operations, which makes it easy to embed OpenGL
graphics into standard HTML (web) documents. Most modern web browsers support
WebGL, including Apple Safari, Google Chrome, Microsoft Internet Explorer, Mozilla
Firefox, and Opera. Since web programming is outside the scope of this book, we will not
cover any WebGL specifics. Note however that because WebGL is based on OpenGL ES,
which in turn is based on standard OpenGL, much of what is covered in this book can be
transferred directly to learning about these OpenGL variants.

The very topic of 3D graphics lends itself to impressive, even beautiful images.
Indeed, many popular textbooks on the topic are filled with breathtaking scenes, and it
is enticing to leaf through their galleries. While we acknowledge the motivational utility

1 JavaScript is a scripting language that can be used to embed code in webpages. It has strong
similarities to Java, but also many important differences.

CGP_Java2E_CH00-2nd-Pass.indd 12 07-09-2018 11:16:12


Pre fa c e ■ xiii

of such examples, our aim is to teach, not to impress. The images in this book are simply
the outputs of the example programs, and since this is an introductory text, the resulting
scenes are unlikely to impress an expert. However, the techniques presented do constitute
the foundational elements for producing today’s stunning 3D effects.

We also haven’t tried to create an OpenGL or JOGL “reference.” Our coverage of


OpenGL and JOGL represents only a tiny fraction of their capabilities. Rather, our aim is
to use OpenGL and JOGL as vehicles for teaching the fundamentals of modern shader-
based 3D graphics programming, and provide the reader with a sufficiently deep under-
standing for further study. If along the way this text helps to expand awareness of JOGL
and other related technologies, that would be nice too.

What’s New in This Edition


The biggest change we have made in this second edition is switching math libraries. In
the first edition, we used a math library called “graphicslib3D” which we had built our-
selves to support an advanced graphics course at California State University Sacramento.
Since then, a new Java-based math library called “JOML” has emerged that offers many
advantages over graphicslib3D. First, JOML was developed with speed in mind, and using
it enables us to more effectively introduce performance-related topics. Second, JOML is
becoming an extremely popular math library among JOGL users, and therefore learning
it is a valuable skill. Finally, JOML is an open source project with an active developer
community, and as such is likely to enjoy better long-term support than graphicslib3D.

The switch to JOML affects virtually every program in the book, although in most
cases the changes are small. Readers who have used our previous edition will find that
their existing code may not work without updating the code (and the library) to JOML.
We hope that any minor inconvenience will be offset by improved performance and the
benefits of standardization to a more widely used library.

As we did for graphicslib3D in our previous edition, we have included the latest ver-
sion of JOML on the companion disc distributed with this book. However, readers are
encouraged to seek out and utilize the newest version of JOML as it is being continually
updated. For this reason, our installation instructions describe how to obtain the latest
version of JOML from the Internet.

There are some new sections in the book that we hope readers will find exciting. As
alluded to above, we have added a section on coding for performance. We also added a
section on generating soft shadows that we promised in the instructor notes for our previ-
ous edition. The techniques for soft shadows also help with reducing jagged-edge shadow

CGP_Java2E_CH00-2nd-Pass.indd 13 07-09-2018 11:16:12


xiv ■ P refa c e

artifacts, and so users are likely to use them frequently, even when soft shadows aren’t
necessary. We also added a new section in Chapter 13 (on geometry), showing how to
generate hair or fur by using a geometry shader to change primitive types.

Almost immediately after our first edition was released, we were asked how to run
the programs on a Macintosh. After getting all of our examples running on a Mac, we pub-
lished the steps on our website. That information has become an additional appendix in
this edition. In fact, for this edition, we have moved all installation details into appendices.

We also added an appendix on using NVIDIA’s Nsight graphics debugger. The first
time we saw this tool we were blown away and desperately wanted to include it in our
book. Nsight was developed for use with C++, but after some experimentation—and some
much appreciated help from NVIDIA—we were able to get it to work with Java/JOGL.
We are delighted to include it in this second edition.

We have made numerous corrections and—we hope—improvements. The chapter on


skyboxes is largely rewritten, for example. Throughout the book, much of the code has
been restructured, such as by moving commonly reused functions into a separate utility
module. We also went through the entire book and spruced up the quality and resolution
of the figures.

Intended Audience
This book is targeted at students of computer science. This could mean undergraduates
pursuing a BS degree, but it could also mean anyone who studies computer science. As
such, we are assuming that the reader has at least a solid background in object-oriented
programming, at the level of someone who is, say, a computer science major at the junior
or senior level.

There are also some specific things that we use in this book but don’t cover because
we assume the reader already has sufficient background, including the following:
• Java and its Abstract Window Toolkit (AWT) or Swing library, especially for
GUI-building
• Java configuration details, such as manipulating the CLASSPATH
• event-driven programming
• basic matrix algebra and trigonometry
• awareness of color models, such as RGB, RGBA, etc.

CGP_Java2E_CH00-2nd-Pass.indd 14 07-09-2018 11:16:12


Pre fa c e ■ xv

The audience for this new second edition is also hoped to be expanded by the release
of its “sister” textbook, Computer Graphics Programming in OpenGL with C++. In par-
ticular, we envision the possibility of a learning environment where students are free to
utilize either Java or C++ in the same classroom, selecting one or the other book. The two
texts cover the material sufficiently in lockstep that we believe conducting a course in this
manner should be possible.

How to Use This Book


This book is designed to be read from front to back. That is, material in later chapters
frequently relies on information learned in earlier chapters. So it probably won’t work to
jump back and forth in the chapters; rather, work your way forward through the material.

This book is intended mostly as a practical, hands-on guide. While there is plenty of
theoretical material included, the reader should treat this text as a sort of “workbook,” in
which you learn basic concepts by actually programming them yourself. We have pro-
vided code for all of the examples, but to really learn the concepts you will want to “play”
with those examples—extend them to build your own 3D scenes.

At the end of each chapter are a few problems to solve. Some are very simple, involv-
ing merely making simple modifications to the provided code. The problems that are
marked “(PROJECT),” however, are expected to take some time to solve and require writ-
ing a significant amount of code, or combining techniques from various examples. There
are also a few marked “(RESEARCH)” that encourage independent study because this
textbook doesn’t provide sufficient detail to solve them.

OpenGL calls, whether made in C or in Java through JOGL, often involve long lists of
parameters. While writing this book, the authors debated whether or not to, in each case,
describe all of the parameters. We decided that at the very beginning we would describe
every detail. But as the topics progress, we decided to avoid getting bogged down in every
piece of minutiae in the OpenGL calls (and there are many), for fear of the reader losing
sight of the big picture. For this reason, it is essential when working through the examples
to have ready access to reference material for Java, OpenGL, and JOGL.

For this, there are a number of excellent reference sources that we recommend using
in conjunction with this book. The javadocs for Java and JOGL are absolutely essential,
and can be accessed online or downloaded. The reader should bookmark them for easy
access in a browser, and expect to access them continuously for looking up items such

CGP_Java2E_CH00-2nd-Pass.indd 15 07-09-2018 11:16:13


xvi ■ P refa c e

as parameter and constructor details. Use the following URLs for the Java and JOGL
javadocs:

https://docs.oracle.com/javase/8/docs/api/
https://jogamp.org/deployment/webstart/javadoc/jogl/javadoc

Many of the entries in the JOGL javadoc are simply pointers to the corresponding
entry in the OpenGL documentation:

https://www.opengl.org/sdk/docs/man/

Our examples utilize a mathematics library called JOML. This is a Java library that
also has its own set of javadocs. After installing JOML (described in the appendices), the
reader should locate the accompanying javadoc link and bookmark it. At press time, the
current link is

https://joml-ci.github.io/JOML/apidocs/

There are many other books on 3D graphics programming that we recommend read-
ing in parallel with this book (such as for solving the “research” problems), including the
following five that we often refer to:
• (Sellers et al.) OpenGL SuperBible [SW15]
• (Kessenich et al.) OpenGL Programming Guide [KS16] (the “red book”)
• (Wolff) OpenGL 4 Shading Language Cookbook [WO13]
• (Angel and Shreiner) Interactive Computer Graphics [AS14]
• (Luna) Introduction to 3D Game Programming with DirectX 12 [LU16]

Companion Files
This book is accompanied by a companion disc that contains the following items:
• All of the Java/OpenGL programs and related utility class files and GLSL shader
code presented in the book, along with batch files for compiling and running them
• The models and texture files used in the various programs and examples
• The cubemap and skydome image files used to make the skies and horizons
• Normal maps and height maps for lighting and surface detail effects
• All of the figures in the book, as image files
• The JOML mathematics library (version 1.9.11)
Readers who have purchased the electronic version of this book may obtain these files
by contacting the publisher at [email protected].

CGP_Java2E_CH00-2nd-Pass.indd 16 07-09-2018 11:16:13


Pre fa c e ■ xvii

Instructor Ancillaries
Instructors in a college or university setting are encouraged to obtain the instructor ancil­
lary package that is available for this book, which contains the following additional items:
• A complete set of PowerPoint slides covering all topics in the book
• Solutions to most of the exercises at the ends of the chapters, including code
where applicable
• Sample syllabus for a course based on the book
• Additional hints for presenting the material, chapter-by-chapter
This instructor ancillary package is available by contacting the publisher at info@
merclearning.com.

Acknowledgments
Early drafts of this book (prior to the first edition) were used in the CSc-155 (Advanced
Computer Graphics Programming) course at CSU Sacramento, and benefited from many
student corrections and comments (and in some cases, code). The authors would like to
particularly thank Mitchell Brannan, Tiffany Chiapuzio-Wong, Samson Chua, Anthony
Doan, Kian Faroughi, Cody Jackson, John Johnston, Zeeshan Khaliq, Raymond Rivera,
Oscar Solorzano, Darren Takemoto, Jon Tinney, James Womack, and Victor Zepeda for
their suggestions.

Feedback started coming in almost immediately after the first edition was published.
We were especially excited to hear from instructors who adopted the book for their
courses and shared their experiences. Dr. Mauricio Papa from the University of Tulsa
traded several useful emails with us. Sean McCrory prepared a wonderfully detailed set
of corrections to a couple of our lighting (Chapter 7) and Perlin noise (Chapter 14) imple-
mentations. We also heard from many students at various institutions, and their questions
helped us to assess strengths and weaknesses in our book.

A sort of “acid test” for our book came in the fall of 2017, when our colleague Dr. Pinar
Muyan-Ozcelik used the first edition while teaching our CSc-155 course for her first time.
This gave us an opportunity to assess whether our book achieved its goal as a “teach
yourself” resource. The course went well, and along the way Dr. Muyan-Ozcelik kept a
running log of questions and corrections for each chapter, which led to many improve-
ments in this second edition.

Kai Burjack, lead developer of the JOML math library, has been extraordinarily
generous with his time and assistance as we migrated from graphicslib3D to JOML. He
reviewed key segments of our book and gave us insight into some important aspects of
JOML. He also helped guide us in using JOML correctly.

CGP_Java2E_CH00-2nd-Pass.indd 17 07-09-2018 11:16:13


xviii ■ P re fa c e

We are extremely grateful for the ongoing assistance provided to us by Julien Gouesse,
engine support maintainer at JogAmp. Mr. Gouesse has provided technical information
on JOGL textures, cube maps, buffer handling, proper loading of shader source files, and
a variety of other topics. His help has led to significant improvements in our text.

Jay Turberville of Studio 522 Productions in Scottsdale (Arizona) built the dolphin
model shown on the cover and used throughout this book. Our students love it. Studio 522
Productions does incredibly high-quality 3D animation and video production, as well as
custom 3D modeling. We were thrilled that Mr. Turberville kindly offered to build such a
wonderful model just for these books.

We wish to thank a few other artists and researchers who were gracious enough
to allow us to utilize their models and textures. James Hastings-Trew of Planet Pixel
Emporium provided many of the planetary surface textures. Paul Bourke allowed us to
use his wonderful star field. Dr. Marc Levoy of Stanford University granted us permis-
sion to use the famous “Stanford Dragon” model. Paul Baker’s bump-mapping tutorial
formed the basis of the “torus” model we used in many examples. We also thank Mercury
Learning for allowing us to use some of the textures from Introduction to 3D Game
Programming with DirectX 12 [LU16].

Dr. Danny Kopec connected us with Mercury Learning and introduced us to its
publisher, David Pallai. Dr. Kopec’s textbook, Artificial Intelligence in the 21st Century,
inspired us to consider Mercury, and our telephone conversations with him were extremely
informative. We were deeply saddened by Dr. Kopec’s untimely passing, and regret that
he didn’t have the chance to see our book come to fruition.

Finally, we wish to thank David Pallai and Jennifer Blaney of Mercury Learning for
their continued enthusiasm for this project and for guiding us through the textbook pub-
lishing process.

Errata
If you find any errors in our book, please let us know! Despite our best efforts, this book
certainly contains mistakes. We will do our best to post corrections as soon as errors are
reported to us. Shortly after the publication of the first edition, we established a webpage
for collecting errata and posting corrections—the same webpage will continue to be used
for the second edition:

http://athena.ecs.csus.edu/~gordonvs/errata.html

The publisher, Mercury Learning, also maintains a link to our errata page. So if the URL
for our errata page should ever change, check the Mercury Learning website for the latest link.

CGP_Java2E_CH00-2nd-Pass.indd 18 07-09-2018 11:16:13


Pre fa c e ■ xix

About the Authors


Dr. V. Scott Gordon has been a professor in the California State University system
for over twenty years, and currently teaches advanced graphics and game engineering
courses at CSU Sacramento. He has authored or coauthored over thirty publications in a
variety of areas, including artificial intelligence, neural networks, evolutionary computa-
tion, software engineering, video and strategy game programming, and computer science
education. Dr. Gordon obtained his PhD at Colorado State University. He is also a jazz
drummer and a competitive table tennis player.

Dr. John Clevenger has over forty years of experience teaching a wide variety of courses,
including advanced graphics, game architecture, operating systems, VLSI chip design,
system simulation, and other topics. He is the developer of several software frameworks
and tools for teaching graphics and game architecture, including the graphicslib3D
library used in the first edition of this textbook. He is the technical director of the ACM
International Collegiate Programming Contest, and oversees the ongoing development
of PC^2, the most widely used programming contest support system in the world.
Dr. Clevenger obtained his PhD at the University of California, Davis. He is also a
performing jazz musician and spends summer vacations in his mountain cabin.

References
[AS14] 
E. Angel and D. Shreiner, Interactive Computer Graphics: A Top-Down Approach
with WebGL, 7th ed. (Pearson, 2014).

[JO16] 
JogAmp, accessed July 2016, http://jogamp.org/

[KS16] 
J. Kessenich, G. Sellers, and D. Shreiner, OpenGL Programming Guide: The
Official Guide to Learning OpenGL, Version 4.5 with SPIR-V, 9th ed. (Addison-
Wesley, 2016).

[LU16] 
F. Luna, Introduction to 3D Game Programming with DirectX 12, 2nd ed.
(Mercury Learning, 2016).

[LW16] Lightweight Java Game Library (LWJGL), accessed July 2016, https://www
.lwjgl.org/

[SW15] G. Sellers, R. Wright Jr., and N. Haemel, OpenGL SuperBible: Comprehensive
Tutorial and Reference, 7th ed. (Addison-Wesley, 2015).

[WO13] D. Wolff, OpenGL Shading Language Cookbook, 2nd ed. (Packt Publishing,
2013).

CGP_Java2E_CH00-2nd-Pass.indd 19 07-09-2018 11:16:13


Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
CGP_Java2E_CH00-2nd-Pass.indd 20 07-09-2018 11:16:13
C hapter 1
Getting Started

1.1 Languages and Libraries����������������������������������������������������������������������������������������������1


1.2 Installation and Configuration��������������������������������������������������������������������������������������4

■ ■ ■■■
Graphics programming has a reputation for being among the most challeng-
ing computer science topics to learn. These days, graphics programming is shader
based—that is, some of the program is written in a standard language such as Java
or C++ for running on the CPU and some is written in a special-purpose shader
­language for running directly on the graphics card (GPU). Shader programming has
a steep learning curve, so that even drawing something simple requires a convoluted
set of steps to pass graphics data down a “pipeline.” Modern graphics cards are able
to process this data in parallel, and so the graphics programmer must understand the
parallel architecture of the GPU, even when drawing simple shapes.
The payoff, however, is extraordinary power. The blossoming of stunning virtual
reality in videogames and increasingly realistic effects in Hollywood movies can be
greatly attributed to advances in shader programming. If reading this book is your
entrée into 3D graphics, you are taking on a personal challenge that will reward you
not only with pretty pictures but with a level of control over your machine that you
never imagined was possible. Welcome to the exciting world of computer graphics
programming!

1.1 LANGUAGES AND LIBRARIES


Modern graphics programming is done using a graphics library. That is, the
p­ rogrammer writes code which invokes functions in a predefined library (or set
of libraries) that provide support for lower-level graphical operations. There are
many graphics libraries in use today, but the most common library for platform-
independent graphics programming is called OpenGL (Open Graphics Library). This
book describes how to use OpenGL for 3D graphics programming in Java.

CGP_Java2E_CH01-2nd-Pass.indd 1 29-08-2018 13:17:19


2 ■ C o mp u te r G ra p h ic s P ro g ramming in O pe nG L w ith J a va , Se c ond Edition

Using OpenGL with Java requires configuring several libraries. In this sec-
tion, we describe which libraries are needed, some common options for each, and
the option(s) that we will use throughout the book. Details on how to install and
configure these libraries for your specific platform can be found in the appendices.
Running the programs in this book requires the following languages and
libraries:

• Java
• OpenGL / GLSL
• JOGL
• JOML
It is likely that the reader will need to do a few preparatory steps to ensure
that each of these are installed and properly accessible on his or her system. In the
following subsections we briefly describe each of them; see the appendices for
details on how to install and/or configure them for use.

1.1.1 Java
Java was developed at Sun Microsystems in the early 1990s, and the first stable
release of a development kit (JDK) occurred in 1995. In 2010, Oracle Corporation
acquired Sun and has maintained Java since that time [OR16]. This book assumes
at least Java version 8, which was released in 2014.

1.1.2 OpenGL / GLSL


Version 1.0 of OpenGL appeared in 1992 as an “open” alternative to vendor-­
specific application programming interfaces (APIs) for computer graphics.
Its specification and development was managed and controlled by the OpenGL
Architecture Review Board (ARB), a then newly formed group of industry par-
ticipants. In 2006 the ARB transferred control of the OpenGL specification to
the Khronos Group, a nonprofit consortium which manages not only the OpenGL
specification but a wide variety of other open industry standards.
Since its beginning OpenGL has been revised and extended regularly. In 2004,
version 2.0 introduced the OpenGL Shading Language (GLSL), allowing “shader
programs” to be installed and run directly in graphics pipeline stages.

CGP_Java2E_CH01-2nd-Pass.indd 2 29-08-2018 13:17:19


C ha pte r 1 · G e tting Sta rte d ■ 3

In 2009, version 3.1 removed a large number of features that had been depre-
cated, to enforce the use of shader programming as opposed to earlier approaches
(referred to as “immediate mode”).1 Among the more recent features, version 4.0
(in 2010) added a tessellation stage to the programmable pipeline.
This textbook assumes that the user is using a machine with a graphics card
that supports at least version 4.3 of OpenGL. If you are not sure which version of
OpenGL your GPU supports, there are free applications available on the web that
can be used to find out. One such application is GLView, by a company named
“realtech VR” [GV16].

1.1.3 JOGL
JOGL is a set of OpenGL bindings (sometimes called a “wrapper”) which
provides a mechanism for invoking C-based OpenGL functions from Java code.
JOGL first appeared in 2003, published on the website Java.net. Since 2010 it has
been an independent open source project, part of a suite of Java bindings main-
tained by JogAmp [JO16], an online community of developers. JogAmp also main-
tains JOAL and JOCL, bindings for OpenAL and OpenCL, respectively. As new
versions of OpenGL and/or Java are released, new versions of JOGL are developed
to support continued compatibility. JogAmp also maintains a short online user’s
guide that includes valuable guidelines for installing and using JOGL efficiently
and effectively [JU16]. This book assumes at least version 2.3 of JOGL.

1.1.4 JOML
3D graphics programming makes heavy use of vector and matrix algebra. For
this reason, use of OpenGL is greatly facilitated by an accompanying function
library or class package to support common mathematical tasks. For example, the
popular OpenGL SuperBible [SW15] utilizes a C library called “vmath”; in this
book, we use a Java library called Java OpenGL Math Library, or JOML.
JOML provides classes and basic math functions related to graphics concepts,
such as vector, matrix, and quaternion. It also contains a variety of utility classes
for creating and using common 3D graphics structures, such as a stack for building

1 Despite this, many graphics card manufacturers (notably NVIDIA) continue to support
deprecated functionality.

CGP_Java2E_CH01-2nd-Pass.indd 3 29-08-2018 13:17:19


4 ■ C o mp u te r G ra p h ic s P ro g ramming in O pe nG L w ith J a va , Se c ond Edition

hierarchical structures, perspective and look-at matrices, and a few basic shapes
such as a rectangle and a sphere.
JOML was conceived in mid-2015 by Richard Greenlees and is an open source
project currently being developed and maintained by Kai Burjack, who took over
the project shortly after its inception. While it is relatively new, it has enjoyed wide-
spread adoption because of its high-performance characteristics. JOML is specifi-
cally designed to maximize performance in an OpenGL render loop (animation).
The previous edition of this book utilized our own in-house Java mathematics
library called graphicslib3D. We hope that users of our earlier edition appreciate the
better support and performance of JOML.

1.2 INSTALLATION AND CONFIGURATION


While developing the second edition of this book, we decided to include
p­ latform-specific details for the Macintosh (which were omitted from the first
­edition). We then wrestled with the best approach for including the platform-specific
configuration information necessary to run the example programs. Configuring a
system for using OpenGL on a Mac is somewhat more complicated than the equiv-
alent configuration for the Windows PC. Ultimately, we opted to separate installa-
tion and configuration information into individual platform-specific appendices.
We hope that this will provide each reader with a single relevant place to look for
information regarding his or her specific system, while at the same time avoiding
bogging down the rest of the text with platform-specific details which may not be
relevant to every reader. In this edition, we provide detailed configuration instruc-
tions for Microsoft Windows in Appendix A and for the Macintosh in Appendix B.

References

[GV16] GLView, realtech-vr, accessed July 2016, http://www.realtech-vr.com/glview/


[JO16] JogAmp, accessed July 2016, http://jogamp.org/
[JU16] JOGL Users Guide, accessed July 2016, https://jogamp.org/jogl/doc/userguide/
[OR16] Java Software, Oracle Corp., accessed July 2016, https://www.oracle
.com/java/index.html
[SW15] G. Sellers, R. Wright Jr., and N. Haemel, OpenGL SuperBible: Comprehensive
Tutorial and Reference, 7th ed. (Addison-Wesley, 2015).

CGP_Java2E_CH01-2nd-Pass.indd 4 29-08-2018 13:17:19


Random documents with unrelated
content Scribd suggests to you:
vagy a szív tekintetében, legtöbbször pedig mindkettőben
hátralékban vannak. Ezért hát szívesen elkerüli a mások társaságát.
Egyáltalán az ember saját belső értékéhez mérten kedveli vagy
gyűlöli a magányosságot, azaz a maga társaságát. A mizantrópiának
erről a fajtájáról értekezik Kant is, Kritik des Urtheilskraft c.
művében, az első rész 29. §-ához írt általános megjegyzés vége felé.
Ifjú embernél értelmi mint erkölcsi tekintetben rossz jel, ha korán
beletalálja magát és otthonos az emberek vásári sürgésében és
mintegy elkészülve lép az életbe: ez nemtelenségre vall. Ellenben
bizonyos idegenkedés, meglepődő, félszeg és fonák magaviselet
nemesebb természetre mutat.
Ifjúságunk vidámsága és bátor életkedve részint azon alapszik,
hogy a hegynek fel menve, nem látjuk a halált, mely túl a hegy
lábánál várakozik ránk. De ha átlépjük a csúcsot, akkor igazán
megpillantjuk a halált, amelyet eddig csak hallomásból ismertünk.
Ekkor megcsappanván az életerő, sülyedni kezd az életkedv is. Az
ifjonti gondtalanságot szomorú komolyság váltja fel és ez az arcra is
rányomja a bélyegét. Míg fiatalok vagyunk, bármit is mondjanak, az
életet végtelennek tartjuk és ehhez képest is bánunk az idővel. Minél
idősebbek leszünk, annál inkább takarékoskodunk vele. Öregebb
korunkban minden elmúlt nap ahhoz hasonló érzést vált ki belőlünk,
melyet a halálraítélt érez minden lépésnél, a vérpadhoz közeledve.
Az ifjúság szempontjából az élet végtelenül hosszú jövő, az
öregség szemével tekintve nagyon rövid mult; úgy, hogy kezdetben
olyannak mutatkozik, mint a tárgyak, ha a messzelátó objektív
lencséjét tesszük szemünk elé, de a végén, mintha a szemlencsét.
Meg kell öregedni, tehát sokáig kell élni, míg az ember megérti, hogy
mily rövid az élet. Minél korosabb az ember, annál kisebbeknek
látszanak az emberi dolgok összesen és egyenként. Az élet, mely
ifjúságunkban szilárdnak és állandónak tetszett, most tiszavirágéletű,
gyors tüneménynek látszik. Ifjúságunkban az idő sokkal lassabban
halad. Ezért is életünk első negyede nemcsak a legboldogabb,
hanem a leghosszabb is. Sokkal több emléket is hagy maga után és
kétannyi elmesélni való van rajta, mint a rákövetkező korokon. Mint
Ő
a tavaszi napok, szinte tűrhetetlenül hosszúak az ifjúság idői. Ősszel
ellenben rövidebbek, de egyúttal derültebbek, állandóbbak a napok.
De vajjon miért látjuk öregkorban a mögöttünk levő életet oly
rövidnek? Mert oly rövidnek tartjuk, mint az emlékezetét. Ebből
pedig kihullott minden jelentéktelen és sok kellemetlen részlet és így
kevés maradt benne. Miként értelmünk egyáltalán úgy emlékező
erőnk is felette tökéletlen: a megtanultat gyakorolni, a multon
kérődzni kell, hogy a feledés mélységébe ne sülyedjen. De a
jelentéktelen és kellemetlen dolgokon nem szoktunk kérődzni. A
jelentéktelen dolgok száma pedig mindig szaporodik, mert sok olyan
körülmény, mely eleinte jelentősnek tetszett, utóbb lassanként a
számtalan ismétlődés folytán elveszíti jelentőségét. Ezért emlékezünk
jobban korábbi életéveinkre, mint a későbbiekre. Minél tovább élünk,
annál kevesebb esemény lesz oly fontos és jelentős előttünk, hogy
utóbb kérődzzünk rajta. Pedig csak úgy őrizheti meg az
emlékezetünk, különben elfeledjük. Így szalad hát időnk mindinkább
kevesebb nyomot hagyva maga után. De a kellemetlenséget sem
szívesen idézzük vissza emlékezetünkbe, különösen ha azok
hiúságunkat sértik. Ez pedig a leggyakoribb eset, mert ritkán ér
bennünket szenvedés teljesen a hibánkon kívül. Ezért elfelejtünk sok
kellemetlenséget.
Ez a kettős veszteség az, ami emlékezetünket oly röviddé teszi és
arányosan mindig rövidebbé, minél hosszabb lesz a tárgya. Miként a
parton a tárgyak mindinkább kisebbednek és kevésbé
felismerhetőkké válnak, ha hajón tőlük távolodunk, úgy letűnt
éveink, élményeink és cselekvéseink is. Hozájárul még, hogy néha az
emlékezés és képzelő erőnk éltünk valamely rég elmúlt jelenetét oly
elevenen idézik fel, mint a tegnapi napot és egészen a közelünkbe
hozzák. Ez onnét van, mert lehetetlen az egész hosszú multat
egyetlen képben megjeleníteni, már csak azért is, mert az egyes
elmúlt eseményeket nagyrészt elfeledtük és csupán általános, elvont
fogalmunk maradt róla, nem pedig szemléletünk. Ezért tetszenek oly
közellévőknek a mult egyes jelenetei, mintha csak tegnap történtek
volna. A köztük lefolyt idő pedig eltűnik és az egész élet
felfoghatatlanul rövidnek tetszik. Öregségünkben néha egész hosszú
multunk szinte mesésen rövidnek tűnik fel szemünkben, mert hisz’
főkép mindig ugyanazt az állandó jelent látjuk. E belső tüneménynek
az az oka, hogy lényünk nem mint magánvaló, hanem csupán annak
a jelensége esik az idő fogalma alá és hogy a jelen a tárgy és az
alany érintkező pontja.
Miért látjuk másrészt ifjúságunkban oly beláthatatlanul hosszúnak
az előttünk levő életet? Mert helyet kell teremteni a határtalan
reményeknek, melyekkel a jövőt benépesítjük, amelyeknek
megvalósítására a Matuzsálem kora is rövid volna. Másik oka, hogy
mértéknek azt a néhány elmúlt évet vesszük, melyeknek emlékezete
anyagban dús és ezáltal hosszú. Mert az ujdonság mindent
jelentősnek láttat, miért is utóbb még újra fölidéztük, tehát gyakran
emlékezetünkbe idéztük és ezáltal az abba bevésődött.
Néha azt hisszük, hogy visszavágyunk valamely helyre, pedig
csak az után az idő után sóvárgunk, midőn ott éltünk és ifjabbak,
frissebbek voltunk. Az idő így ámít bennünket a tér álarcában.
Utazzunk csak oda, kitűnik a csalódásunk.
Hogy az ember magas életkort érjen el, annak hibátlan szervezet
mellett két útja van. Két lámpa égését vehetnők erre példázatnak: az
egyik azért ég sokáig, mert kevés ugyan az olaja, de vékony a bele
is; a másiknak erős a bele és sok az olaja. Az olaj az életerő, a bél
ennek a fogyasztója.
Életerőnk tekintetében 36-ik évünkig azokra hasonlítunk, akik
kamataik után élnek: amit ma elköltünk, holnap újra itt van. Ez
időponton túl kezdünk már a tőkéhez is hozzányúlni. Eleinte alig
vehető a dolog észre: a kiadás legnagyobb része magamagától
pótlódik. Ügyet se vetünk a mutatkozó csekély hiányra. Csakhogy ez
mindinkább növekszik, napról napra észrevehetőbbé válik. A ma
mindenkor szegényebb a tegnapnál, a megállásnak reménye nélkül.
Miként a szabadon eső testek gyorsulása nő ez a fogyasztás, – míg
végre semmi sem marad. Különösen szomorú eset, ha az életerő és
a vagyon mindkettő egyidőben olvad lefelé: ezért növekszik az
öregkorban a vagyon iránti szeretet. Eleinte azonban, a
nagykorúságig és még valamivel azon túl életerőnk tekintetében
azokra hasonlítunk, akik kamataikból valamelyest a tőkéhez
csatolnak, nemcsak a kiadást fedezhetjük, hanem még a tőkét is
növelhetjük. És néha valamely becsületes gyám gondoskodásából ez
egyúttal pénzünkre is áll. Boldog ifjúság! Szomorú öregkor! Azért
mégis jó kímélni az ifjúi erőt. Aristoteles megjegyzi (Politika, L. nlt. c.
5.), hogy az olympiai versenyeken csak két vagy három esetben
fordult elő, hogy ugyanaz az ember ifjú korában és később mint férfi
is győztes lett volna. Az előzetes gyakorlat követelte korai
megerőltetés annyira kimeríti az erőket, hogy később a férfikorra
nem marad. Még inkább mint az izomerőre, áll ez az idegerőre,
melynek a szellemi munka a megnyilvánulása. Innét van, hogy az
ingenia praecocia, a csodagyermekek, az üvegházi nevelés e
gyümölcsei, később nagyon közönséges emberekké válnak. Az ókori
nyelvek korai, kényszerű, megerőltető tanulása lehet az oka sok
tudós elme későbbi bénultságának és ítélethiányának.
Megfigyeltem, hogy majd minden embernek a jelleme különösen
illik valamely életkorhoz. Van olyan, aki szeretetre méltó ifjú, aztán
vége; mások erős, tevékeny férfiak, kinek az öregség elveszi minden
értékét, némelyek pedig legelőnyösebb oldalukról mutatkoznak be
öregségükben, mikor is szelidebbek, mert tapasztaltabbak és
nyugodtabbak. Ez különösen a franciáknál fordul gyakran elő. Úgy
lehet a dolog, hogy magában az illető jellemben van valami ifjúi,
férfias vagy öreges, amellyel a kor vagy megegyezik, vagy pedig
korrektívum gyanánt ellene munkál.
Hajón utazva, előrehaladásunkat azon vesszük észre, hogy a
parton a tárgyak visszamaradnak és kisebbé válnak: idősebbé
válásunkat arról ismerjük meg, hogy korosabb emberek mindinkább
fiataloknak tetszenek előttünk.
Már fentebb említettük az okát, hogy miért okoz növekvő
korunkkal szellemünkre mindig csekélyebb hatást mindaz, amit
látunk, teszünk és tapasztalunk. Ily értelemben elmondhatjuk, hogy
csak ifjúságunkban élünk teljes öntudattal, öregségünkben csak
féllel. Minél idősebbek vagyunk, annál kevesebb öntudattal élünk: a
dolgok hatás nélkül röppennek tova. A műtárgy sem tesz hatást, ha
ezerszer láttuk. Az ember megteszi a teendőjét, anélkül, hogy utóbb
tudna róla. Így válik az élet mindinkább kevésbé tudatossá, minél
inkább közeledik a teljes tudatlansághoz, így lesz mindig gyorsabb az
idő futása. A gyermekkorban a tárgyak és az események ujdonsága
mindent tudatossá teszen: ezért beláthatatlanul hosszú a nap. Ez
történik velünk utazásokon is, ezért tetszik ott egy hónap
hosszabbnak, mint otthon négy. A dolognak ez újsága azonban nem
akadályozza meg, hogy a hosszúnak tetsző időt igazán
hosszadalmasnak ne találjuk. Az értelmet lassanként leköszörüli a
megszokás, úgy hogy mindinkább csökkenő hatással vonul el felette
minden. Ezáltal a napok jelentéktelenebbek és így rövidebbek
lesznek: a gyermek órái hosszabbak az öreg ember napjainál.
Életünk ideje gyorsuló mozgást végez, miként a lefelé gördülő golyó.
Miként a forgó korongon minden pont annál gyorsabban fut, minél
távolabbra esik a középpontól, akkép annál gyorsabban peregnek le
napjaink, minél távolabb vagyunk éltünk kezdetétől. Föltehetjük
tehát, hogy kedélyünk közvetlen becslésében egy esztendőnek
hosszúsága fordított viszonyban áll ugyanannak életkorunkban
foglalt hányadosával: ha például az év életkorunknak egy ötödét
teszi, tízszerte oly hosszúnak tűnik föl előttünk, mintha annak csak
egy ötvened részét tenné ki.
Az idő gyorsaságának e különbségei a leghatározottabb befolyást
gyakorolják létünk minden egyes korára. Elsőbb is azt okozza, hogy
gyermekkorunk – bár csak mintegy 15 évre terjed – életünknek a
leghosszabb kora és így a leggazdagabb emlékezésekben; aztán,
hogy az unalomnak életkorunkkal fordított arányban vagyunk
alávetve. A gyermekeknek folyton szükségök van időtöltésre, játékra
vagy munkára: ha egy pillanatig fennakadnak, rögtön erőt vesz
rajtok a rémes unalom. Még az ifjak is nagyon ki vannak ennek téve,
miért is gond szállja meg őket minden ki nem töltött óra miatt. A
férfikorban mindinkább szűnik az unalom: az öregeknek az idő
mindig rövid és a napok nyílsebesen tűnnek tova. Természetesen
emberről szólok, nem pedig elvénhedett baromról. Az életfolyás e
gyorsulása által a kései években rendesen szűnik az unalom,
másrészt elnémulnak a szenvedelmek is kínjaikkal. Jó egészség
mellett általában csekélyebb az élet terhe, mint az ifjúkorban: ezért
mondják javakornak az öregséget megelőző és annak gyengeségétől
és bajaitól ment időt. Azért mégis az ifjúság a szellem
megtermékenyülésének az ideje, a bimbófakasztó tavasz, mikor
minden hat ránk és öntudatunkat eleveníti. Mély igazságokat nem
lehet kiszámítani, hanem csak megpillantani. Első felismerésök a
közvetetlen, pillanatnyi benyomásnak az eredménye: csak addig
következhetik be, míg az erős, eleven és mély. E tekintetben tehát
minden az ifjúi évek felhasználásától függ. Később inkább bírunk
hatni másokra, sőt a világra, mert magunk befejezett, lezárt
egyéniségek vagyunk és a világ már kevéssé hat ránk. Ezek tehát a
cselekvés évei, amaz pedig az eredeti felfogás és megismerés ideje.
Ifjúságunkban a szemlélet, öregségünkben pedig a gondolkodás
az uralkodó, amaz tehát a költészet ideje, ez pedig inkább a
filozófiáé. Gyakorlati tekintetben is ifjúságunkban a szemlélet hatása
alatt cselekszünk, öreg korban ellenben a meggondolás a döntő.
Ennek részben az az oka, hogy csak öregségünkben tekinthetünk
kellő számú szemléletre vissza, amelyek fogalmainknak teljes
jelentőséget, tartalmat és hitelt kölcsönöznek. Másrészt a megszokás
csökkenti a szemlélet hatását. Ifjúságunkban ellenben, különösen ha
élénk a képzelőerőnk, a szemléletesnek, a dolgok külsejének
olyannyira döntő a hatása, hogy a világot, mint valami képet
tekintjük. Főgondunk, hogy mint fest az alakunk azon a képen, az
már kisebb gondunk, hogy belsőnkben milyen a kedvünk. Ennek a
mutatója az ifjak személyi hiúsága és nyalka piperéje.
A szellemi erők legnagyobb energiája és ruganyossága
kétségkívül az ifjúkorban található, legkésőbb a 35-ik életévig.
Ezután folyton, ámbár lassan, csökken. De a későbbi éveknek, sőt az
öregségnek is megvan ehelyett a szellemi kárpótlása. A tapasztalás
és a tudomány csak e korban válik igazán gazdaggá: volt időnk és
alkalmunk, hogy a dolgokat minden oldalról szemléljük és
átgondoljuk, érintkező pontjaikat és összekötő kapcsaikat
megtaláljuk. Csak most értjük meg igazán a dolgok összefüggését.
Minden megülepedett. Amit már ifjúságunkban is tudtunk, most
sokkal alaposabban értjük meg, mert minden forgalomra sok
bizonyítékunk van. Amiről ifjúságunkban azt hittük, hogy tudjuk, azt
öregségünkben igazán tudjuk és azonfelül még sok egyebet.
Ezenfelül most tudásunk minden oldalról átgondolt és összefüggő
ismeret, míg ifjúságunkban hézagos és töredékes volt. Csak
öregségünkben lehet teljes és helyes képzetünk az életről, mikor is
egész természetes folyamatát áttekinthetjük. Nemcsak az elejéről
vetünk rá egy sejtő pillantást, hanem az egészre visszanézve,
megismerjük teljes hiábavalóságát. A többiek pedig kába hittel
várják, hogy az igazi csak ezután jön. De viszont az ifjúságban több
a lendület: a kevésből, amit ismer, többet tud csinálni. Az
öregségben több az ítélet, behatolás és alaposság. Ifjúságunkban
gyüjtjük egyéniségünknek sajátos ismereteit, eredeti
alapnézeteinket, mindazt, amivel a kiváltságos szellem hivatva van a
világot megajándékozni. Az anyag mesterévé azonban csak későbbi
években válhat az ember. Nagy írók rendszerint ötvenéves koruk
táján írták mesterműveiket. A tudás fája fiatalon ver gyökeret, bár
csak koronás korában termi meg gyümölcsét. Minden történelmi
korszak, még a legnyomorúságosabb is, sokkal különbnek tartja
magát az előzőknél, így van ez az emberi életkornál is: mindkettő
egyaránt téves. A testi növekedés éveiben, midőn szellemi erőnk és
ismeretünk nap-nap után nő, szokása a mának, hogy kicsinyléssel
tekintsen a tegnapra. E megszokás meggyökerezik és fenmarad még
akkor is, midőn már beállott a szellemi erők csökkenése és a mának
tisztelettel kellene tekintenie a tegnapra. Gyakran nagyon is
lebecsméreljük ifjúi éveink műveit és ítéleteit.
Általában meg kell itt jegyeznünk, hogy ámbár a jellem és az
értelem lényegükben egyaránt velünkszületett dolgok, mindamellett
az értelem korántsem marad annyira változatlannak, mint az előbbi,
hanem bizonyos szabályszerű változásoknak van alávetve. Ennek
részint az az oka, hogy az értelmi erőnek fizikai alapja van, részint
az, hogy az anyaga tapasztalati. Ez az erő folyvást növekszik, míg
csak eléri a csúcspontot, majd lassanként alászáll a hülyeségig.
Másrészt a gondolkodásnak és tudásnak a tartalma, a belátás
gyakorlata és tökéletessége folyton növekszik a határozott
gyöngeség bekövetkeztéig, amely aztán mindent elejt. Az a
körülmény, hogy az ember egy változhatatlan és egy kettős módon
változó elemből, a jellemből és az értelmi erőből áll, magyarázza
meg a különböző életkorokban mutatkozó különbségeket.
Elmondhatjuk, hogy éltünk első negyven éve adja meg a
szöveget, a következő harminc pedig a hozzávaló kommentárt,
amely feltárja annak igaz értelmét és összefüggését, erkölcsi
tanítását és minden finomságait.
Az élet végével pedig úgy vagyunk, mint mikor vége van az
álarcosbálnak, midőn leszedik az álarcokat. Most látjuk csak igazán,
hogy kikkel érintkeztünk életünk idején. A jellemek megvilágosodnak
előttünk, a tettek meghozták a gyümölcsüket, a művek elnyerték
igazságos méltatásukat és a tévesztő délibáb elfoszlott. Mindehhez
pedig idő kellett.
Különös azonban, hogy az ember önmagát, saját célját is csak
élete vége felé ismeri és érti meg igazán, különösen ami a világhoz
és másokhoz való viszonyát illeti. Gyakran, de nem mindig,
alacsonyabb helyet fogunk magunknak kijelölni, mint eleinte hittük.
Olykor azonban magasabbat is, midőn nem ismerve eléggé a világ
alacsonyságát, emennél feljebb tűztük ki célunkat. Megtudjuk, hogy
valójában mit érünk.
Az ifjúságot az élet boldog korának szoktuk mondani, az
öregséget pedig a szomorúnak. Ez igaz lenne, ha a szenvedélyek
boldogítanának. Pedig ezek ide-oda tépik az ifjúságot kevés öröm és
sok kín közepette. A hűvös öregséget nyugton hagyják, amely innét
nyeri szemlélődő jellegét. A belátás felszabadul és uralkodóvá válik.
Ez pedig önmagában mentes a fájdalomtól, tehát öntudatunk is
annál boldogabb lesz, minél jobban az ismeret uralkodik benne.
Fontoljuk csak meg, hogy minden élvezet negatív természetű,
ellenben a fájdalom pozitív. Ebből is megérthetjük, hogy a
szenvedélyek nem boldogíthatnak és hogy az öregség azért még
nem sajnálatra méltó, mert meg van fosztva némely élvezettől. Mert
minden élvezet csupán egy szükséglet csillapítását jelenti. Hogy a
szükséglet megszüntével az élvezettől is elesünk, az éppen oly
kevéssé méltó a sajnálatra, mint hogy asztalbontás után többet nem
ehetünk és hogy egy átaludt éj után ébren kell lennünk. Platon
(Bevezetés a Köztársasághoz) igen helyesen mondja boldognak az
öregséget, mely végre megszabadítja az embert az őt untalan
nyugtalanító nemi ösztöntől. A nemi ösztönből eredő sokféle és
végtelen szeszély és szenvedelem úgyszólva bizonyos állandó, enyhe
őrületben tartja az embert, aki eszének teljes birtokába csak ez
ösztön kialvása után léphet. Bizonyos amellett, hogy az ifjúságnak
általában bizonyos melankólia és szomorúság, az öregségnek
ellenben bizonyos vidám derű a sajátja. Ennek pedig nem más egyéb
az oka, minthogy ifjúságunkban ama démonnak uralma és robotja
kínoz bennünket, nem könnyen engedve egy szabad órát. Közvetve
vagy közvetlenül ez az oka minden bajnak, mely az embert éri vagy
fenyegeti. Ezzel szemben az öregség olyan ember vidám derűjét
mutatja, aki lerázta a sokáig hordott bilincset és végre szabadon
mozog. Viszont azt is mandhatnók, hogy a nemi ösztön kiválásával
föl van emésztve az élet magva és csak a héjja marad meg.
Hasonlatos ez az olyan színjátékhoz, melyet emberek kezdtek el,
majd automaták játszanak végig emberi ruhákban.
Bármint áll is a dolog, az ifjúság a nyugtalanság kora, az öregség
pedig a nyugalomé. A gyermek vágyakozva nyujtja ki a kezét
messzire, minden után, amit sokféle tarkaságban lát maga előtt:
mert ingerli az, mivel sensoriuma még friss és fiatal. Ezt cselekszi,
csakhogy nagyobb energiával, az ifjú is. A tarka világ számtalan
alakja izgatja, képzelete szertelenül nagyítja a valót. Telve van
kívánsággal és határozatlan sóvárgással: ez megfosztja a
nyugalomtól, pedig nélküle nincsen boldogság. Az öregségben
minden megcsillapodik, a vér lehűl, az érzékek kevésbé érzékenyek.
Másrészt a tapasztalás megmutatja a dolgok értékét és az élvezetek
tartalmát, miáltal az ember megszabadul az ábrándok, agyrémek és
előítéletek seregétől, mely a nyílt és tiszta kilátást elfödte. Az ember
helyesebben és világosabban értékel mindent és belátja a földi
dolgoknak a semmiségét. Ez adja meg minden öregnek, még a
nagyon közönséges értelműnek is a bölcseség némi látszatát, mely
az ifjabbak felett kitünteti. Míg az ifjú azt hiszi, hogy Isten tudja mi
minden csodás dolgot lehetne találni e világon, csak a helyét tudná,
addig az öreg ember át van hatva a Prédikátor igazságától, hogy
„minden hiúság!“ Tudja, hogy minden dió üres, akárhogy is be van
aranyozva.
Csak késői korában jut el az ember a földi dolgok és a világ
dicsőségének Horátiusi „nem csodálásához“: vagyis a minden dolgok
hiúságáról és minden földi pompa ürességéről való közvetlen, őszinte
és határozott meggyőződéshez; a délbábok eltüntek. Nem hiszi
többé, hogy akár a palotában, akár a kunyhóban valami különös
boldogság lakozhatik, amely lényegében nagyobb lehetne annál,
amelyet ő maga is élvezhet bárhol, ha testi és lelki fájdalmaktól
szabad. Nem szabja ki a világ mértékével, hogy mi a nagy és kicsiny,
mi az előkelő és hitvány. Ez adja meg az öregnek azt a különös lelki
nyugalmat, mellyel mosolyogva tekint a világ szemfényvesztésére.
Teljesen kiábrándulván, tudja, hogy az emberi élet nyomorúsága
minden vásári cifraságon is áttetszik. Akárhogy is festik és díszítik, az
élet igazi értékét a szenvedéstől való mentességben kell keresni,
nem pedig a gyönyörökben és a pompában. (Hor. epist. L. I. 12. V.
1–4.) A magasabb kor alapvonása a kiábrándultság: az illuziók,
melyek idáig az életnek a maga ingerét és a tevékenységnek a maga
ösztönét megadták, eltüntek. Megismertük a világ minden
pompájának, kivált a fénynek, dísznek és a fenség látszatának
semmiségét és ürességét. Tapasztaltuk, hogy a legtöbb megkívánt
dolog és óhajtott élvezet mögött ugyancsak kevés rejlik és így
lassanként odajutottunk, hogy belátjuk egész létünknek nagy
szegénységét és ürességét. Csak 70. életévünkben értjük meg
teljesen a Prédikátor könyvének első versét. És ez az, ami az öreg
kornak bizonyos bús színezetet ad.
Rendszerint azt hiszik, hogy az öregségnek betegség és unalom a
végzete. Az első éppen nem tartozik az öregség lényegéhez, kivált
nem akkor, ha nagy kort akarunk elérni: mert crescente vita, crescit
sanitas et morbus (megnövekedvén az élet, nő az egészség és a
betegség is.) Az unalomnak pedig kevésbé van alávetve mint az
ifjúság. Az unalom ugyanis nem kísérője a magányosságnak, amit
könnyen belátható okoknál fogva, mindenesetre magával hoz az
öregkor, legfeljebb azoknál, akik csak érzéki és társas élvezeteket
ismertek, ellenben szellemi erejöket nem fejlesztették. Igaz, hogy a
szellemi erők is megcsökkennek, ahol azonban sok volt belőlük, ott
marad még elég az unalom legyőzésére is. Másrészt, mint már fent
kimutattuk, a tapasztalat, ismeret, gyakorlat és elmélkedés
mindinkább gyarapítja a helyes belátást, élesíti az ítéletet és feltárja
a dolgok összefüggését: a felhalmozott ismeretek új meg új
kombinációja, az önművelés soha nem szünetelő munkája folyton
foglalkoztatja, kielégíti és megjutalmazza a lelket. Ez némileg
ellensúlyozza az említett csökkenést. Öregkorban ezenfelül, mint
kifejtettük, sokkal gyorsabban múlik az idő: ez is az unalom ellen
van. A testi erő csökkenése keveset árt, hacsak kenyérkereset miatt
nincs rá szükség. A szegénység nagy baj öregkorban. Ha azonban ez
száműzve van, az egészség pedig jól szolgál, akkor az öregség az
életnek igen is tűrhető része. Kényelem és biztonság a fő
szükségletei: ezért szereti az ember a pénzt öregkorában még
inkább, mint előbb, mert kárpótol a hiányzó erőkért. Búcsút mondva
Vénusznak, szívesen keres vidítást Bacchusnál. Míg eddig a látás,
utazás, tanulás volt szükséglete, most oktatni, beszélni vágyik. Nagy
szerencse, ha az embernek még agg korában is megmarad az
előszeretete bizonyos tudomány vagy zene, színjátszás, egyáltalán
valamely külső dolog iránt, amint ez tényleg ki is tart némelyeknél a
késő vénségig. Az ember sohasem veszi több hasznát az
egyéniségének, mint öregségében. Természetesen, akik mindig
eltompultak voltak, idős korukban mindinkább automatákká válnak.
Folyton ugyanazt gondolják, mondják és teszik, semmi külső
benyomás ezen nem változtathat, sem valami újat ki nem válthat
belőlük. Ha az ilyen aggokhoz szól az ember, annyi, mintha homokba
írna: rögtön nyoma vész. Az ilyen aggság az életnek holt feje (caput
mortuum) csupán. A második gyermekkornak ezt a bekövetkezését a
természet némely ritka esetben a harmadik fogzással szokta
jelképezni.
A növekvő öregséggel folyton fogyása az erőknek mindenesetre
szomorú tény, ám egyúttal szükséges, sőt üdvös is: előre munkál a
halálnak, mely nélküle nehezebben esnék. A jó halál, euthanasia,
legnagyobb haszna a nagyon magas kornak, a felette könnyű,
megelőző betegség nélkül való és küzdéstől nem kísért kimúlás,
mely nem is érezhető: leírása főművem második kötete 41.
fejezetének 470. lapján (3. kiad. 534.) található.
A Véda Upanisadja (Vol. II. p. 53.) az ember természetes
életkorát száz évre teszi. Azt hiszem, helyesen. Azt tapasztaltam
ugyanis, hogy csak a 90 évet meghaladott emberek részesülnek a jó
halálban, akik kimúlnak minden betegség, sőt szélütés, görcsök és
hörgések nélkül, néha még el se sápadnak, olykor evés után ülve
elszenderülnek; vagy inkább nem is halnak meg, hanem
megszünnek élni. Minden más, előbbi korban történő halál idő előtt
való és csupán betegség okozta.26)
Az emberi élet voltakép sem hosszúnak, sem rövidnek nem
mondható,27) mert valójában az a mértéke minden más
időbecslésnek.
Ifjúság és öregség közt az marad mindenkor a főkülönbség, hogy
amaz az életet látja maga előtt, ez a halált; annak a multja rövid, a
jövője pedig hosszú, ennél megfordítva áll a dolog. Mindenesetre az
öreg ember előtt már csak a halál lebeg, az ifjú előtt ellenben az
élet; kérdés azonban, hogy melyik a kettő közül a súlyosabb és hogy
nem jobb-e az életen túl lenni, mint előtte, miként a Prédikátor
mondja (7., 2.): „Jobb a halál napja a születés napjánál“. Hosszú élet
kívánása mindenesetre merész óhajtás. Mert, quien larga vida vive
mucho mal vive (aki hosszú életet él, sok rosszat ér meg), mondja a
spanyol közmondás.
Az asztrológiának ugyan nincs igaza abban, hogy az egyes ember
életfolyása a planétákban előre meg vagyon írva. Azonban az emberi
életfolyásnak általában, az egyes életkoroknak megfelel egymásután
egy-egy uralkodó planéta. A tizedik életévben Merkur uralkodik. Az
ember is, miként ez, gyorsan és könnyen mozog a legszűkebb
körben. Hangulatát csekélységek is befolyásolják, de sokat és
könnyen tanul a ravaszság és ékesszólás istenségének uralma alatt.
Húszéves korában az ember Vénuszt uralja: a szerelem és a nő
foglalja le teljesen. Harmincadik évében Mars az úr: az ember heves,
erős, merész, harcias és dacos. Negyvenedik évében a négy
planetoid uralkodik rajta, élete a szélességben terjed: frugi-vá
(alkalmas, derék ügyes) lesz, vagyis Ceres-szel a hasznost szolgálja,
Vesta segélyével saját tűzhelyet alapít, Pallas kioktatja a szükséges
tudományokban, felesége pedig, mint Juno, úrnője a háznak. A
mintegy 60, azóta felfedezett planetoid újítás, melyről semmit sem
akarok tudni. Úgy teszek velök, mint a filozófia tanárai velem:
semmibe sem veszem őket, mert nem illenek a portékám közé.
Ötvenedik életévében pedig Jupiter az uralkodó. A legtöbb egyívásút
az ember túlélte és a jelen nemzedék felett állónak érzi magát. Ereje
még teljes, tapasztalatban és tudásban pedig gazdag:
egyéniségéhez és helyzetéhez mérten tekintélye kiterjed egész
környezetére. Többé nem fogadja a parancsot, hanem osztja. Most a
legalkalmasabb arra, hogy a maga körében kormányzó és uralkodó
legyen. Az ember ötvenéves korában éri el, Jupiter uralma alatt,
pályájának a tetőpontját. Hatvanéves korában Jupiterrel elérkezik az
ólmosság: az elnehezedés, lassúság és szívósság. Az öreg ember
olyan mint a halál, mint az ólom: súlyos, lomha és halovány – miként
Shakespeare mondja (Romeo és Júlia II. felv. 5. jel.). Végül elérkezik
Uranos, mikor is, mint mondani szokás, az égbe jutunk. Neptun, kit
sajnos, gondolathiányból neveztek így el, itt nem jöhet szóba; mert
nem is nevezhetem itt igazi nevén Erosnak. Különben
megmutatnám, miként kapcsolódik a kezdet a véghez, mint fűződik
titkos kapoccsal a szerelem a halálhoz, melynél fogva az Orcus, vagy
az egyiptomiaknál Amenthes (Plutarchos de Iside et os. c. 29.),
nemcsak elvesz, hanem ad is és a halál az életnek nagy
gyűjtőmedencéje. Onnét, igen onnét az Orcusból származik minden,
ott volt egykoron minden, ami most él. Hacsak felérnők ésszel ezt a
szemfényvesztést, amellyel ez történik: akkor minden világos lenne.
Lábjegyzetek.
1) A görög nyelvü idézeteket Schopenhauer latin fordításában és
magyarul adjuk.
A fordító.
2)

Wie an dem Tag, der dich der Welt verliehen:


Die Sonne stand zum Grusse der Planeten,
Bist alsobald und fort und fort gediehen,
Nach dem Gesetz, wonach du angetreten.
So musst du sein, dir kannst du nicht entfliehen,
So sagten schon Sybillen, so Propheten;
Und keine Zeit und keine Macht zerstückelt,
Geprägte Form, die lebend sich entwickelt.

3) A nomád-élet, mely a műveltség legalsóbb fokát mutatja, ismét


jelentkezik annak legmagasabb fokán, az általánossá lett
turistaságban. Amazt a szükség, ezt az unalom hozta létre.
4) A természet folytonos emelkedést mutat a szervetlen világ
mechanikai és vegyi hatásaitól a növényvilág homályos,
tudattalan életén át az állatvilághoz. Itt támad az értelem és a
tudat, majd csekély kezdetből fokról fokra emelkedik föl egész az
emberig. Ennek értelmességében éri el a természet működésének
csúcsát és célját, benne valósítja meg a legtökéletesebbet és
legnehezebbet, amit létrehozhat. Ám az emberi faj értelmessége
maga is sok észrevehető fokozatot tüntet fel és csak felette ritkán
éri el a legmagasabb, a tulajdonképpeni magas intelligencia fokát.
Ez a természetnek legnehezebb és legkiválóbb terméke, a világon
előforduló legritkább és legbecsesebb kincs. Az ilyen intelligencia
kristálytiszta tudatában a világ élesebben és teljesebben
tükröződik, mint bárhol egyebütt. Nincs ennél nemesebb és
drágább kincs a világon, amelynek bírása a legnagyobb
gyönyöröknek a forrása. Minden egyéb eltörpül emellett, úgy,
hogy aki ennek az egynek bírlalója, semmi egyébre nincs
szüksége a szabad időnél, hogy e birtokát zavartalanul élvezhesse
és gyémántját csiszolja. Mert az összes többi, nem értelmi
élvezetek alsóbb rendüek. Lényegükben mind akarati
mozgásokban végződnek, amilyenek a kívánás, vágy, aggódás és
elérés, bármi legyen a tárgyuk. Ez sohasem folyhatik le szenvedés
nélkül és a teljesedéskor el nem maradhat több vagy kevesebb
csalódás, holott a szellemi élvezeteknél az igazság mindinkább
tisztábban ragyob felénk. Az értelem országában nincs fájdalom,
ott minden megismerés. Az értelmi élvezetek természetesen
kinek-kinek értelme arányában válnak hozzáférhetőkké, mert a
világ minden szelleme haszontalan arra nézve, akinek magának
sincs szelleme. Az értelem magasabb fokának megvan az a
természetes hátránya, hogy vele arányosan emelkedik a
szenvedés iránti fogékonyság és itt érheti el a legmagasabb
kifejlődést.
5) A köznapiság valójában nem egyéb, mint hogy az akarat a
tudatban teljesen felülmúlja a megismerést. Ez oly fokot érhet el,
hogy a megismerés kizárólag az akaratot szolgálja. Ahol tehát e
szolgálat nem kívánatos, vagyis ahol sem kicsiny, sem nagy
indokok nem követelik meg, ott a teljes gondolatnélküliség
állapota áll be. Ám a megismeréstől mentes akarat a
legalacsonyabb rendű dolog: a buta tuskó ilyen, kitetszik ez
olyankor, ha eldől. Az ilyen közönséges embernél csak az
érzékszervek és az észrevettek felfogásához szükséges értelmi erő
van működésben. Ezért fülel a köznapi ember szüntelenül
mindenre, ami körülötte történik, minden legcsekélyebb neszre
azonnal felfigyel, akárcsak az állat. Meglátszik ez az ő alrangú
mivolta az arcán, egész külsején. Az ilyen hétköznapi arc annál
inkább visszataszító, ha a tudatot betöltő akarat még alantas,
önző és rossz is.
6) Az emberiség legmagasabb rétegei pompájukban,
megjelenésük fényében bátran mondhatják magukról: a mi
boldogságunk teljesen rajtunk kívül van, a mások fejében. – (Sch.
megjegyzése.)
7) Scire tuum nihil est, nisi te scire hoc sciat alter. (Tudásod
semmi, ha magad is nem tudod, hogy más is tud róla.)
8) A lovagi becsület a gőgnek és a hóbortnak a gyermeke. (Az
ezzel ellentétes igazságot az Állhatatos Fejedelem (Calderon)
fejezi ki legélesebben e szavakkal: Ádám öröksége ez! Felette
feltűnő, hogy a gőgnek e legfelső foka kizárólag annak a
vallásnak a követői közt lelhető föl, mely híveit a legnagyobb
alázatosságra kötelezi. Mert sem előbbi korokban, sem más
világrészben nem ismerik a lovagi becsületnek ezt az elvét. De
mégsem szabad ezt a vallás rovására írni, hanem inkább a
hűbériségére, mely korban minden nemes ember kiskirálynak
tekintette magát, aki maga fölött emberi bírót nem ismert és
ennélfogva saját személyének teljes sérthetetlenséget és
szentséget tulajdonított. Azért aztán minden ellene irányúló
merényletet, minden ütést vagy gyalázó szót halálos vétségnek
ítélt. A becsület elve és a párbaj tehát eredetileg csak a nemes
ember ügye volt, később a tiszteké, majd a hozzájuk csatlakozó
magasabb rendűekké, akik nem akartak amazok mögött maradni.
Ámbár a párbaj az istenítéletből vette az eredetét, mégsem oka,
hanem csak okozata és alkalmazása a becsület elvének: aki földi
bírót nem ismer el, az nem isteni bíróhoz fellebbez. Maga az
istenítélet azonban nem a kereszténységből folyik. Megtalálhatjuk
régi korokban a hinduknál is, sőt nyomai máig is fönmaradtak.
9) Ezért is rossz bókot mond az, aki divatos szólással élve,
valamely művet azzal vél megtisztelni, hogy azt tettnek minősíti.
Mert a művek sokkal előkelőbbek rangra. A tett mindig csak egyes
motívum által okozott cselekvés és így különálló, múlandó és a
világ általános és ősi eleméhez, az akarathoz tartozó. A nagy és
szép mű ellenben maradandó, mert általános jelentősége van és
mert a hiba nélkül való, tiszta értelemből fakadt, mint valami illat
az akarat világa felé emelkedvén.
A tettek hírének előnye az, hogy rendszerint azonnal nagy zajjal
jelentkezik, hogy gyakran egész Európában meghallják. A mű
hírneve viszont lassan terjed, gyakran csak egy század múlva éri
el teljességét: de akkor aztán olykor évezredeken át fenmarad. A
tett ellenben az első kirobbanás után mindinkább gyengül
hatásában, mindig kevesebben és kevesebben tudnak felőle, míg
végül csak a történelemben éli kisérteties életét.
10) Mivel legnagyobb gyönyörűségünkre szolgál, ha mások
csodálnak bennünket, a csodálók viszont, még ott is, ahol arra
minden ok megvan, nem szívesen adják rá magukat, azért
legboldogabb az, aki valahogy annyira vitte, hogy őszintén
csodálni tudja magamagát. Csakhogy aztán mások meg ne
tévesszék.
11) Le bonheur n’est pas chose aisée: il est très diffiche de le
trouveir en nous, et impossible de le trouver ailleurs. (A
boldogság nem könnyű dolog: nehéz azt megtalálni
önmagunkban, másutt pedig lehetetlen.)
12) Mint ahogy testünket ruha fedi, úgy burkolja be lelkünket is a
hazugság. Szavaink, cselekvéseink, egész mivoltunk hazug. Igazi
lelkünket ezen a burkon keresztül csak néha-néha lehet
megsejteni, mit a ruhán keresztül a test idomait.
13) Bajokon tudvalevőleg úgy lehet könnyíteni, hogy közösen
viseljük el másokkal. Úgy látszik, hogy az emberek az unalmat is
ide sorolják. Összeülnek, hogy együtt unatkozzanak. Amint az élet
iránti szeretet lényegében nem egyéb, mint a haláltól való
félelem, azonképpen a társasösztön nem alapszik a társaság iránt
érzett közvetetlen szereteten, hanem a magánytól való félelmen.
Nem anyira a mások bájos, boldogító társaságát keressük, mint
inkább az egyedüllét sívárságától és öntudatunk egyhangúságától
szökünk. Ezért aztán beérjük a hitvány társasággal is és eltűrjük
szükségképi járuléka gyanánt minden terhes kényszerűségeit. Ha
azonban legyőztük a magánytól való idegenkedésünket és
edzéssel megszoktuk kezdetben elijesztő, közvetetlen
benyomásait, akkor állandóan kellemesen érezhetjük magunkat a
magányban és nem áhítjuk a társaságot. Mert a társaság nem
egyenes szükségletünk és a magánynak jótékony tulajdonságait
lassanként megszokjuk.
14) Ugyanily értelemben Sâdi, Gulistan-jában: Ettől fogva bucsút
mondtunk a társaságnak és az elkülönülés útjára tértünk; mert
csak a magányosságban van biztonság.
15) Az emberek irígysége mutatja, hogy mennyire
boldogtalanoknak érzik magukat; mások tetteire irányuló
folytonos figyelmük pedig jele annak, hogy mennyire unatkoznak.
16) Az alvás a halál egy darabja, amelyet előlegül kölcsön kérünk
és érte újra megkapjuk és felújítjuk az életet, melyet egy nap
kimerített. Le sommeil est un enprunt fait à la mort. Az álom a
haláltól fölvett kölcsön. Vagy: az álom ideiglenes kamatja a
halálnak, amely maga a tőke lefizetése. Ezt annál későbben
követeli a hitelező, minél bőségesebben és pontosabban fizetjük
meg a kamatokat.
17) Némelyik embernél a legokosabb, ha azt gondoljuk: meg nem
változtathatom, tehát felhasználom.
18) Ha az emberekben a jó volna túlsúlyban a gonosz felett,
célszerűbb lenne inkább igazságosságukban, méltányosságukban,
hálájukban, szeretetükben vagy részvétükben bízni, mint
félelmükben. Azonban a dolog megfordítottja a helyes,
tanácsosabb tehát ehhez igazodni.
19) „Akarat szabadsága“ Kelen Ferenc fordításában megjelent:
Filozófiai írók tára, 17. kötet.
20) Az akaratot úgyszólva maga adta magának az ember, mert az
az ő valósága. A szellem viszont az ég adománya, – az örök,
titokzatos, szükségszerű sorsé, melynek az ő szülőanyja puszta
eszköze volt.
21) A barátság és pajtásság az életben való boldogulás
főeszközei. De a kiváló képességek büszkévé tesznek. Az ilyen
ember nem alkalmas arra, hogy hízelegjen a gyatra
tehetségűeknek, akik előtt fölényét el kellene titkolnia. Aki viszont
tudatában van csekély képességeinek, könnyen megfér az
alázatosság, szívélyesség, nyájasság és a hitványság iránti
tisztelet erényeivel, vagyis barátokat és pártfogókat keres
magának.
Az itt elmondottak egyaránt illenek az állami szolgálatra, mint
tiszteletbeli állásokra, sőt a tudósok világában elért hírnévre is.
Így az akadémiákban is mindenütt a kedves középszer uralkodik,
az érdemes emberek későn, vagy sohasem kerülnek oda. Így van
ez mindenben.
22) A véletlen minden emberi dologban oly kiváló szerepet játszik,
hogy midőn valami messziről fenyegető veszedelemnek elejét
igyekszünk venni, ez a veszedelem gyakran valami előre nem
sejtett körülmény folytán eltünik és egyszerre nemcsak a
meghozott áldozatok vesznek kárba, hanem az általuk előidézett
változás is kárunkra válik a körülmények megváltozott állása
mellett. Nem kell nagyon törődnünk a távol jövővel, hanem
számítsunk a véletlennel is és nézzünk bátran szembe a
veszéllyel, remélve, hogy az, mint sok fekete viharfelhő elvonul.
23) Öröm és bú annyi rohamát álltam már ki, hogy első látásuk
asszonyi módra el nem ragad.
24) A természet ugyanis minden teremtett lénybe félelmet és
rettegést öntött életének és lényének fentartására és gonosz
támadásainak kikerülésére és elűzésére. De a természet ezt a
mértéket nem tudja betartani, hanem a hasznos félelem közé
hiábavalót vegyít: annyira, hogy minden, különösen pedig az
emberi természet telítve van páni félelemmel.
25) Az öregségben az ember jobban ért a szerencsétlenségek
elkerüléséhez, ifjúságában pedig elviseléséhez.
Sch. jegyzete.
26) Variáns: Az ó-testamentum (90. zsoltár 10. vers), az emberi
élet tartamát 70 és ha sok, 80 évre tette és a mi többet jelent,
Herodotos (I. 32. és III. 22.) is ugyanezt mondja. Ez azonban
tévedés és csupán a mindennapi tapasztalás nyers és felületes
megértésének eredménye. Mert ha a természetes életkor 70–80
év volna, akkor az embereknek 70–80. életévük közt öregségből
kellene meghalniok. De ez éppen nincs így: betegségekben
halnak meg, miként a fiatalabbak; a betegség pedig valójában
rendellenesség, ez tehát nem a természetes vég. Csak a 90. és
100. év közt halnak meg az emberek öregségből, betegség,
halálküzdelem, hörgés, vonaglás, néha elsápadás nélkül; amit
euthanasiának neveznek. Ezért is igaza van az Upanisádának,
mikor a természetes életkort 100 évre teszi.
27) Mert ha még oly soká él is az ember, soha sincs többnek a
birtokában, mint a megoszthatatlan jelennek: az emlékezet pedig
napról napra többet veszít a feledés folytán, mint amennyit
gyarapodás folytán nyer.
Javítások.

Az eredeti szöveg helyesírásán nem változtattunk.


A nyomdai hibákat javítottuk. Ezek listája:

45 egénisége egyénisége
56 meserséghez mesterséghez
66 segtíő eszköz segítő eszköz
93 oy méltatlanul oly méltatlanul
96 biztosíják biztosítják
103 fenygetés útján fenyegetés útján
121 eljesített szolgálathoz teljesített szolgálathoz
126 kortár-társaitól kortársaitól
127 estet röpít otva testet röpít tova
129 becsülenek becsületnek
132 legdrágább és leritkább legdrágább és legritkább
170 magyarzázza meg magyarázza meg
171 redeti célzatnak eredeti célzatnak
174 megányosan él magányosan él
186 elővará-rozsolni elővarázsolni
186 Ezért isí Ezért is
193 bologság forrása boldogság forrása
211 ki is mutajuk ki is mutatjuk
217 beltáhatjuk beláthatjuk
220 meglátjhatja megláthatja
229 arra kelelne arra kellene
230 elengedheteten elengedhetetlen
252 a ngy tömege nagy tömege
252 semmnit a lét semmint a lét
264 fjúságunkban ifjúságunkban
271 némi lászatát némi látszatát
277 hasznost szolgálaj hasznost szolgálja
278 gonodlathiányból gondolathiányból
278 melynél fova melynél fogva
*** END OF THE PROJECT GUTENBERG EBOOK ÉLETBÖLCSESÉG:
AFORIZMÁK ***

Updated editions will replace the previous one—the old editions


will be renamed.

Creating the works from print editions not protected by U.S.


copyright law means that no one owns a United States
copyright in these works, so the Foundation (and you!) can copy
and distribute it in the United States without permission and
without paying copyright royalties. Special rules, set forth in the
General Terms of Use part of this license, apply to copying and
distributing Project Gutenberg™ electronic works to protect the
PROJECT GUTENBERG™ concept and trademark. Project
Gutenberg is a registered trademark, and may not be used if
you charge for an eBook, except by following the terms of the
trademark license, including paying royalties for use of the
Project Gutenberg trademark. If you do not charge anything for
copies of this eBook, complying with the trademark license is
very easy. You may use this eBook for nearly any purpose such
as creation of derivative works, reports, performances and
research. Project Gutenberg eBooks may be modified and
printed and given away—you may do practically ANYTHING in
the United States with eBooks not protected by U.S. copyright
law. Redistribution is subject to the trademark license, especially
commercial redistribution.

START: FULL LICENSE


THE FULL PROJECT GUTENBERG LICENSE
PLEASE READ THIS BEFORE YOU DISTRIBUTE OR USE THIS WORK

To protect the Project Gutenberg™ mission of promoting the


free distribution of electronic works, by using or distributing this
work (or any other work associated in any way with the phrase
“Project Gutenberg”), you agree to comply with all the terms of
the Full Project Gutenberg™ License available with this file or
online at www.gutenberg.org/license.

Section 1. General Terms of Use and


Redistributing Project Gutenberg™
electronic works
1.A. By reading or using any part of this Project Gutenberg™
electronic work, you indicate that you have read, understand,
agree to and accept all the terms of this license and intellectual
property (trademark/copyright) agreement. If you do not agree
to abide by all the terms of this agreement, you must cease
using and return or destroy all copies of Project Gutenberg™
electronic works in your possession. If you paid a fee for
obtaining a copy of or access to a Project Gutenberg™
electronic work and you do not agree to be bound by the terms
of this agreement, you may obtain a refund from the person or
entity to whom you paid the fee as set forth in paragraph 1.E.8.

1.B. “Project Gutenberg” is a registered trademark. It may only


be used on or associated in any way with an electronic work by
people who agree to be bound by the terms of this agreement.
There are a few things that you can do with most Project
Gutenberg™ electronic works even without complying with the
full terms of this agreement. See paragraph 1.C below. There
are a lot of things you can do with Project Gutenberg™
electronic works if you follow the terms of this agreement and
help preserve free future access to Project Gutenberg™
electronic works. See paragraph 1.E below.
1.C. The Project Gutenberg Literary Archive Foundation (“the
Foundation” or PGLAF), owns a compilation copyright in the
collection of Project Gutenberg™ electronic works. Nearly all the
individual works in the collection are in the public domain in the
United States. If an individual work is unprotected by copyright
law in the United States and you are located in the United
States, we do not claim a right to prevent you from copying,
distributing, performing, displaying or creating derivative works
based on the work as long as all references to Project
Gutenberg are removed. Of course, we hope that you will
support the Project Gutenberg™ mission of promoting free
access to electronic works by freely sharing Project Gutenberg™
works in compliance with the terms of this agreement for
keeping the Project Gutenberg™ name associated with the
work. You can easily comply with the terms of this agreement
by keeping this work in the same format with its attached full
Project Gutenberg™ License when you share it without charge
with others.

1.D. The copyright laws of the place where you are located also
govern what you can do with this work. Copyright laws in most
countries are in a constant state of change. If you are outside
the United States, check the laws of your country in addition to
the terms of this agreement before downloading, copying,
displaying, performing, distributing or creating derivative works
based on this work or any other Project Gutenberg™ work. The
Foundation makes no representations concerning the copyright
status of any work in any country other than the United States.

1.E. Unless you have removed all references to Project


Gutenberg:

1.E.1. The following sentence, with active links to, or other


immediate access to, the full Project Gutenberg™ License must
appear prominently whenever any copy of a Project
Gutenberg™ work (any work on which the phrase “Project
Gutenberg” appears, or with which the phrase “Project
Gutenberg” is associated) is accessed, displayed, performed,
viewed, copied or distributed:

This eBook is for the use of anyone anywhere in the United


States and most other parts of the world at no cost and
with almost no restrictions whatsoever. You may copy it,
give it away or re-use it under the terms of the Project
Gutenberg License included with this eBook or online at
www.gutenberg.org. If you are not located in the United
States, you will have to check the laws of the country
where you are located before using this eBook.

1.E.2. If an individual Project Gutenberg™ electronic work is


derived from texts not protected by U.S. copyright law (does not
contain a notice indicating that it is posted with permission of
the copyright holder), the work can be copied and distributed to
anyone in the United States without paying any fees or charges.
If you are redistributing or providing access to a work with the
phrase “Project Gutenberg” associated with or appearing on the
work, you must comply either with the requirements of
paragraphs 1.E.1 through 1.E.7 or obtain permission for the use
of the work and the Project Gutenberg™ trademark as set forth
in paragraphs 1.E.8 or 1.E.9.

1.E.3. If an individual Project Gutenberg™ electronic work is


posted with the permission of the copyright holder, your use and
distribution must comply with both paragraphs 1.E.1 through
1.E.7 and any additional terms imposed by the copyright holder.
Additional terms will be linked to the Project Gutenberg™
License for all works posted with the permission of the copyright
holder found at the beginning of this work.

1.E.4. Do not unlink or detach or remove the full Project


Gutenberg™ License terms from this work, or any files
containing a part of this work or any other work associated with
Project Gutenberg™.

1.E.5. Do not copy, display, perform, distribute or redistribute


this electronic work, or any part of this electronic work, without
prominently displaying the sentence set forth in paragraph 1.E.1
with active links or immediate access to the full terms of the
Project Gutenberg™ License.

1.E.6. You may convert to and distribute this work in any binary,
compressed, marked up, nonproprietary or proprietary form,
including any word processing or hypertext form. However, if
you provide access to or distribute copies of a Project
Gutenberg™ work in a format other than “Plain Vanilla ASCII” or
other format used in the official version posted on the official
Project Gutenberg™ website (www.gutenberg.org), you must,
at no additional cost, fee or expense to the user, provide a copy,
a means of exporting a copy, or a means of obtaining a copy
upon request, of the work in its original “Plain Vanilla ASCII” or
other form. Any alternate format must include the full Project
Gutenberg™ License as specified in paragraph 1.E.1.

1.E.7. Do not charge a fee for access to, viewing, displaying,


performing, copying or distributing any Project Gutenberg™
works unless you comply with paragraph 1.E.8 or 1.E.9.

1.E.8. You may charge a reasonable fee for copies of or


providing access to or distributing Project Gutenberg™
electronic works provided that:

• You pay a royalty fee of 20% of the gross profits you derive
from the use of Project Gutenberg™ works calculated using the
method you already use to calculate your applicable taxes. The
fee is owed to the owner of the Project Gutenberg™ trademark,
but he has agreed to donate royalties under this paragraph to
the Project Gutenberg Literary Archive Foundation. Royalty
payments must be paid within 60 days following each date on
which you prepare (or are legally required to prepare) your
periodic tax returns. Royalty payments should be clearly marked
as such and sent to the Project Gutenberg Literary Archive
Foundation at the address specified in Section 4, “Information
about donations to the Project Gutenberg Literary Archive
Foundation.”

• You provide a full refund of any money paid by a user who


notifies you in writing (or by e-mail) within 30 days of receipt
that s/he does not agree to the terms of the full Project
Gutenberg™ License. You must require such a user to return or
destroy all copies of the works possessed in a physical medium
and discontinue all use of and all access to other copies of
Project Gutenberg™ works.

• You provide, in accordance with paragraph 1.F.3, a full refund of


any money paid for a work or a replacement copy, if a defect in
the electronic work is discovered and reported to you within 90
days of receipt of the work.

• You comply with all other terms of this agreement for free
distribution of Project Gutenberg™ works.

1.E.9. If you wish to charge a fee or distribute a Project


Gutenberg™ electronic work or group of works on different
terms than are set forth in this agreement, you must obtain
permission in writing from the Project Gutenberg Literary
Archive Foundation, the manager of the Project Gutenberg™
trademark. Contact the Foundation as set forth in Section 3
below.

1.F.

1.F.1. Project Gutenberg volunteers and employees expend


considerable effort to identify, do copyright research on,
transcribe and proofread works not protected by U.S. copyright
law in creating the Project Gutenberg™ collection. Despite these
efforts, Project Gutenberg™ electronic works, and the medium
on which they may be stored, may contain “Defects,” such as,
but not limited to, incomplete, inaccurate or corrupt data,
transcription errors, a copyright or other intellectual property
infringement, a defective or damaged disk or other medium, a
computer virus, or computer codes that damage or cannot be
read by your equipment.

1.F.2. LIMITED WARRANTY, DISCLAIMER OF DAMAGES - Except


for the “Right of Replacement or Refund” described in
paragraph 1.F.3, the Project Gutenberg Literary Archive
Foundation, the owner of the Project Gutenberg™ trademark,
and any other party distributing a Project Gutenberg™ electronic
work under this agreement, disclaim all liability to you for
damages, costs and expenses, including legal fees. YOU AGREE
THAT YOU HAVE NO REMEDIES FOR NEGLIGENCE, STRICT
LIABILITY, BREACH OF WARRANTY OR BREACH OF CONTRACT
EXCEPT THOSE PROVIDED IN PARAGRAPH 1.F.3. YOU AGREE
THAT THE FOUNDATION, THE TRADEMARK OWNER, AND ANY
DISTRIBUTOR UNDER THIS AGREEMENT WILL NOT BE LIABLE
TO YOU FOR ACTUAL, DIRECT, INDIRECT, CONSEQUENTIAL,
PUNITIVE OR INCIDENTAL DAMAGES EVEN IF YOU GIVE
NOTICE OF THE POSSIBILITY OF SUCH DAMAGE.

1.F.3. LIMITED RIGHT OF REPLACEMENT OR REFUND - If you


discover a defect in this electronic work within 90 days of
receiving it, you can receive a refund of the money (if any) you
paid for it by sending a written explanation to the person you
received the work from. If you received the work on a physical
medium, you must return the medium with your written
explanation. The person or entity that provided you with the
defective work may elect to provide a replacement copy in lieu
of a refund. If you received the work electronically, the person
or entity providing it to you may choose to give you a second
opportunity to receive the work electronically in lieu of a refund.

You might also like