0% found this document useful (0 votes)
10 views

OpenGL R Programming on Mac OS R X Architecture Performance and Integration 1st Edition Robert P. Kuehne pdf download

The document provides information about the book 'OpenGL Programming on Mac OS X' by Robert P. Kuehne and J. D. Sullivan, which focuses on architecture, performance, and integration of OpenGL within the Mac OS X environment. It includes details on various chapters covering topics such as OpenGL architecture, application programming, and configuration. Additionally, it offers links to other related Mac OS X books available for download.

Uploaded by

izarowyller
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views

OpenGL R Programming on Mac OS R X Architecture Performance and Integration 1st Edition Robert P. Kuehne pdf download

The document provides information about the book 'OpenGL Programming on Mac OS X' by Robert P. Kuehne and J. D. Sullivan, which focuses on architecture, performance, and integration of OpenGL within the Mac OS X environment. It includes details on various chapters covering topics such as OpenGL architecture, application programming, and configuration. Additionally, it offers links to other related Mac OS X books available for download.

Uploaded by

izarowyller
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 86

OpenGL R Programming on Mac OS R X Architecture

Performance and Integration 1st Edition Robert


P. Kuehne pdf download

https://ebookgate.com/product/opengl-r-programming-on-mac-os-r-x-
architecture-performance-and-integration-1st-edition-robert-p-
kuehne/

Get Instant Ebook Downloads – Browse at https://ebookgate.com


Instant digital products (PDF, ePub, MOBI) available
Download now and explore formats that suit you...

Mac OS X Snow Leopard Pocket Guide The Ultimate Quick


Guide to Mac OS X 1st Edition Chris Seibold

https://ebookgate.com/product/mac-os-x-snow-leopard-pocket-guide-the-
ultimate-quick-guide-to-mac-os-x-1st-edition-chris-seibold/

ebookgate.com

Mac OS X Bible Sam A Litt

https://ebookgate.com/product/mac-os-x-bible-sam-a-litt/

ebookgate.com

Mac OS X Snow LeopardPortable Genius Dwight Spivey

https://ebookgate.com/product/mac-os-x-snow-leopardportable-genius-
dwight-spivey/

ebookgate.com

Macworld Mac OS X Bible 1st Edition Lon Poole

https://ebookgate.com/product/macworld-mac-os-x-bible-1st-edition-lon-
poole/

ebookgate.com
MAC OS X and the Digital Lifestyle 1st Edition Brad Miser

https://ebookgate.com/product/mac-os-x-and-the-digital-lifestyle-1st-
edition-brad-miser/

ebookgate.com

Mac OS X The Missing Manual Second Edition David Pogue

https://ebookgate.com/product/mac-os-x-the-missing-manual-second-
edition-david-pogue/

ebookgate.com

Mac OS X Lion The Missing Manual 1st Edition David Pogue

https://ebookgate.com/product/mac-os-x-lion-the-missing-manual-1st-
edition-david-pogue/

ebookgate.com

Mac OS X Snow Leopard Digital Classroom 1st Edition Chad


Chelius

https://ebookgate.com/product/mac-os-x-snow-leopard-digital-
classroom-1st-edition-chad-chelius/

ebookgate.com

Learning Unix for Mac OS X Tiger 1st Edition Dave Taylor

https://ebookgate.com/product/learning-unix-for-mac-os-x-tiger-1st-
edition-dave-taylor/

ebookgate.com
OpenGL
®

Programming
on Mac OS X
®
This page intentionally left blank
OpenGL
®

Programming
on Mac OS X
®

Architecture, Performance,
and Integration

Robert P. Kuehne
J. D. Sullivan

Upper Saddle River, NJ • Boston • Indianapolis • San Francisco


New York • Toronto • Montreal • London • Munich • Paris • Madrid
Capetown • Sydney • Tokyo • Singapore • Mexico City
Many of the designations used by manufacturers and sellers to distinguish their products are claimed as
trademarks. Where those designations appear in this book, and the publisher was aware of a trademark
claim, the designations have been printed with initial capital letters or in all capitals.
The authors and publisher have taken care in the preparation of this book, but make no expressed or
implied warranty of any kind and assume no responsibility for errors or omissions. No liability is assumed
for incidental or consequential damages in connection with or arising out of the use of the information or
programs contained herein.
The publisher offers excellent discounts on this book when ordered in quantity for bulk purchases or
special sales, which may include electronic versions and/or custom covers and content particular to your
business, training goals, marketing focus, and branding interests. For more information, please contact:
U.S. Corporate and Government Sales
(800) 382-3419
[email protected]
For sales outside of the United States, please contact:
International Sales
(317) 382-3419
[email protected]

Visit us on the Web: www.awprofessional.com


Library of Congress Cataloging-in-Publication Data
Kuehne, Robert P.
OpenGL programming on Mac OS X : architecture, performance, and integration / Robert P. Kuehne,
J. D. Sullivan.
p. cm.
Includes bibliographical references and index.
ISBN-13: 978-0-321-35652-9 (pbk. : alk. paper)
ISBN-10: 0-321-35652-7
1. Computer graphics. 2. OpenGL. 3. Mac OS. I. Sullivan, J. D. II. Title.
T385.K82 2007
006.6’6 dc22
2007011974
Copyright  c 2008 Robert P. Kuehne and J. D. Sullivan
All rights reserved. Printed in the United States of America. This publication is protected by copyright, and
permission must be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval
system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or
likewise. For information regarding permissions, write to:
Pearson Education, Inc.
Rights and Contracts Department
501 Boylston Street, Suite 900
Boston, MA 02116
Fax: (617) 671-3447
ISBN 13: 978-0-321-35652-9
ISBN 10: 0-321-35652-7
Text printed in the United States on recycled paper at Donnelley in Crawfordsville, Indiana.
First printing, December 2007
For my family
—Bob

For my family
—John

In memory of democracy
This page intentionally left blank
Contents

List of Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
List of Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
List of Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi
Preface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxv
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxix
About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxxi

Chapter 1. Mac OpenGL Introduction 1


Why the Mac?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2
Why OpenGL? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
The Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

Chapter 2. OpenGL Architecture on OS X 7


Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
About OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Mac OS X Implementation of the OpenGL Specification. . . . . . . . . . .11
OpenGL Feature Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .14
API Layers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
The Mac OS OpenGL Plug-In Architecture . . . . . . . . . . . . . . . . . . . . . 17
Renderers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Drivers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21

Chapter 3. Mac Hardware Architecture 23


Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Data Flow and Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Problem Domains . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Know Thine OS Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
CPU and Clock Rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

vii
Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Video Memory: VRAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32

Chapter 4. Application Programming on OS X 33


Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Mac OS X Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
System Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
Power Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .34
Filesystem. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .38
Finding, Verifying, and Filing Bugs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Threading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Data Parallel Computation: SIMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
PowerPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Intel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

Chapter 5. OpenGL Configuration and Integration 45


API Introductions and Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Mac-Only APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Cross-Platform APIs Supported on the Mac . . . . . . . . . . . . . . . . . . . . . . . 48
API Introduction and Overview Wrap-Up . . . . . . . . . . . . . . . . . . . . . . . . . 49
Configuration API Relationships. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49
Sharing OpenGL Data Between Contexts . . . . . . . . . . . . . . . . . . . . . . . . . 51
Framebuffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Chapter 6. The CGL API for OpenGL Configuration 55


Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
Error Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Pixel Format Selection. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .57
CGLChoosePixelFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Policies and Buffer Sizing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Render Targets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Multisampling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Stereo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Selecting a Renderer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

viii Contents
Context Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Renderer Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Sharing OpenGL Objects Across CGL Contexts . . . . . . . . . . . . . . . . . . . 76
Drawables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Pixel Buffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Off-Screen Drawables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Full-Screen Drawables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Virtual Screen Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Global CGL State Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Using CGL Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .86

Chapter 7. The AGL API for OpenGL Configuration 89


Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Software Layering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Pixel Format and Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Full-Screen Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Windowed Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Additional Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Renderers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104
Context Sharing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Alternative Rendering Destinations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Off-Screen Surfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Pbuffers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Render-to/Copy-to-Texture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Framebuffer Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

Chapter 8. The Cocoa API for OpenGL Configuration 121


Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
NSOpenGLView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
NSView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Additional Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
Manipulating Images and Pixels in OpenGL . . . . . . . . . . . . . . . . . . . . . 140
Context Sharing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Full-Screen Surfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .149

Contents ix
Display Capture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Event Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Alternative Rendering Destinations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Framebuffer Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
Copy-to-Texture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Pbuffer, Off-Screen, and Other Intermediate Targets . . . . . . . . . . . . . 161
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162

Chapter 9. The GLUT API for OpenGL Configuration 163


Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Configuration and Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Pixel Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

Chapter 10. API Interoperability 173


Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Cocoa Image: NSImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Basic NSImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
NSImage to OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
OpenGL to NSImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
QuickTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
QuickTime to OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
OpenGL to QuickTime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
High-Performance QuickTime in OpenGL . . . . . . . . . . . . . . . . . . . . . . . . 192
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193

Chapter 11. Performance 195


Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Axioms for Designing High-Performance
OpenGL Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Minimize State Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Retained Mode versus Immediate Mode Rendering . . . . . . . . . . . . . . . 198
Unidirectional Data Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Use Shaders Where Possible . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
OpenGL for Mac OS X Rules of Thumb for Performance . . . . . . 201
Minimize Data Copies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

x Contents
The OpenGL Multithreaded Engine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Minimizing Function Call Overhead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Minimize CPU and GPU Idle Time by Using
Asynchronous Calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Share Data Across Contexts When Possible . . . . . . . . . . . . . . . . . . . . . . 207
Metrics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .207
Frame Rate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Throughput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
Efficient Data Management Using Mac OpenGL . . . . . . . . . . . . . . . 209
Efficient Handling of Vertex Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .210
A Brief History of the Evolution of Submitting Vertices
in OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Which Methods Should You Use to Submit Vertices
for Drawing?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .213
Apple’s Methods of Vertex Submission, Past and Present. . . . . . . . .214
Efficient Handling of Texture Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Formats and Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Pixel Pipeline and Imaging Subset State . . . . . . . . . . . . . . . . . . . . . . . . . 223
Alignment Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Textures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Compressed Textures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Alignment Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Shaders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
System Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Graphics Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
OpenGL Profiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
OpenGL Driver Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Pixie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Putting It All Together . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
About Please Tune Me. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .237
Please Tune Me 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Please Tune Me 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Please Tune Me 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Please Tune Me 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Please Tune Me 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Please Tune Me 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243

Contents xi
Chapter 12. Mac Platform Compatibility 245
Mac OS Versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
10.0 through 10.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
10.2 (Jaguar) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
10.3 (Panther) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
10.4 (Tiger) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .246
10.5 and Beyond . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
OpenGL Platform Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Mac OS Version Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251

Chapter 13. OpenGL Extensions 253


Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Extension Design and API Integration . . . . . . . . . . . . . . . . . . . . . . . . . 254
Extension Styles and Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Identification, Selection, Query, and Usage. . . . . . . . . . . . . . . . . . . . . 257
Selecting Extensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
Utilization and Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
Extension Management Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
GLEW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
GLUT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275

Appendix A. X11 APIs for OpenGL Configuration 277


Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
Building X11 Applications on OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
X11 Color Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279

Appendix B. Glossary 281

Appendix C. The Cocoa API for OpenGL Configuration


in Leopard, Mac OS X 10.5 283
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
NSOpenGLView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
NSView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294

xii Contents
Additional Topics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Manipulating Images and Pixels in OpenGL . . . . . . . . . . . . . . . . . . . . . 300
Context Sharing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
Full-Screen Surfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .308
Display Capture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Event Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Alternative Rendering Destinations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Framebuffer Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Copy-to-Texture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
Pbuffer, Off-Screen, and Other Intermediate Targets . . . . . . . . . . . . . 321
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322

Appendix D. Bibliography 323

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

Contents xiii
This page intentionally left blank
Figures

Figure 2-1 OpenGL Version History Timeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9


Figure 2-2 AGL, CGL, and AppKit Layered with OpenGL . . . . . . . . . . . . . . 16
Figure 2-3 The Mac OS OpenGL Plugin Architecture . . . . . . . . . . . . . . . . . . . 18
Figure 3-1 Prototypical System Architecture Diagram . . . . . . . . . . . . . . . . . . . 24
Figure 4-1 Threading Layer Cake: Thread Packages, on Top
of POSIX, on Top of Mach Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Figure 5-1 OpenGL Configuration API Dependencies . . . . . . . . . . . . . . . . . . . 50
Figure 5-2 Framebuffer Strata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Figure 6-1 CGL Renderer Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Figure 7-1 AGL Software Dependencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Figure 7-2 AGL Full-Screen Example Results . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Figure 7-3 AGL Window Example Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Figure 7-4 AGL Pbuffer Example Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Figure 7-5 AGL Render-to-Texture Example Results . . . . . . . . . . . . . . . . . . . 116
Figure 7-6 Results of Rendering to a Framebuffer Object and
Texturing a Quad with That Result in AGL . . . . . . . . . . . . . . . . . 119
Figure 8-1 AppKit API and Framework in Overall OpenGL
Infrastructure on the Mac. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .122
Figure 8-2 Subclassing NSOpenGLView in Interface Builder . . . . . . . . . . . 123
Figure 8-3 Subclassed NSOpenGLView in Interface Builder . . . . . . . . . . . . 124
Figure 8-4 Instantiated OpenGL View Object in Interface Builder . . . . . . 124
Figure 8-5 Custom View Palette in Interface Builder . . . . . . . . . . . . . . . . . . . 125
Figure 8-6 Adding a Custom View to a Window in Interface Builder . . . 125
Figure 8-7 Binding a Custom View to the NSOpenGLView
Subclass Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Figure 8-8 Teapot Rendered with NSOpenGLView Subclass . . . . . . . . . . . . 132
Figure 8-9 Subclassing NSOpenGLView in Interface Builder . . . . . . . . . . . 134
Figure 8-10 Subclassed NSOpenGLView in Interface Builder . . . . . . . . . . . . 135
Figure 8-11 MyView Binding in Interface Builder . . . . . . . . . . . . . . . . . . . . . . . 135
Figure 8-12 Context Sharing: Two Windows and Two Custom
NSOpenGLViews in Interface Builder . . . . . . . . . . . . . . . . . . . . . . . 143

xv
Figure 8-13 Context Sharing: Two Custom NSOpenGLViews
in XCode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Figure 8-14 Context Sharing: Set Visible on Launch for
Second Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
Figure 8-15 Context Sharing: Two Windows Demonstrating
Common Shared Data and Unshared (Clear Color)
Context Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
Figure 8-16 Results of Rendering to an FBO and Texturing a Quad
with That Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Figure 9-1 GLUT API and Framework in the Overall OpenGL
Infrastructure on the Mac. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .164
Figure 9-2 New Project Creation for GLUT Application . . . . . . . . . . . . . . . . 165
Figure 9-3 Adding a Framework to This Project . . . . . . . . . . . . . . . . . . . . . . . 166
Figure 9-4 Resultant GLUT Project Showing Framework and
Sample Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Figure 9-5 GLUT Project Results Showing Visual Selection
and Rendered Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Figure 9-6 GLUT Project Results Showing Visual Selection
and Rendered Object for Anti-Aliased Pixel Format . . . . . . . . . 171
Figure 10-1 NSImage Rendered Before setFlipped (left),
and After setFlipped (right). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Figure 10-2 First Frame of the Movie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Figure 10-3 Subsequent Frames of the Movie . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Figure 10-4 Subsequent Frames of the Movie . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Figure 11-1 Vertex Submission Example Application . . . . . . . . . . . . . . . . . . . 222
Figure 11-2 OpenGL Profiler Main Window with Launch
Settings Open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
Figure 11-3 OpenGL Profiler Breakpoints View . . . . . . . . . . . . . . . . . . . . . . . . . 230
Figure 11-4 OpenGL Profiler Statistics View . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Figure 11-5 OpenGL Profiler Trace View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
Figure 11-6 OpenGL Profiler Resources View . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Figure 11-7 OpenGL Pixel Format View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Figure 11-8 OpenGL Profiler Buffer View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Figure 11-9 OpenGL Profiler Scripts View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Figure 11-10 OpenGL Driver Monitor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Figure 11-11 Pixie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Figure 11-12 Performance-Tuning Exercise Application: Please
Tune Me . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239

xvi Figures
Figure 11-13 ptm1 OpenGL Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Figure 11-14 ptm2 OpenGL Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
Figure 11-15 ptm3 OpenGL Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Figure 11-16 ptm4 OpenGL Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Figure 11-17 ptm5 OpenGL Statistics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Figure 13-1 Shader Extension Application Results if Successful . . . . . . . . . 263
Figure 13-2 Shader Extension Application Results if Unsuccessful . . . . . . 264
Figure C-1 AppKit API and Framework in Overall OpenGL
Infrastructure on the Mac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Figure C-2 Window and NIB Ready to be Edited in Leopard
Interface Builder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Figure C-3 Selection, Layout, and Specialization of a CustomView
in Interface Builder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
Figure C-4 Create and Bind an Instance of our CustomView . . . . . . . . . . . . 287
Figure C-5 Custom View Derivation and Project Files in XCode 3.0 . . . . . 287
Figure C-6 Teapot Rendered with NSOpenGLView with Subclass . . . . . . . 294
Figure C-7 Two Views, Contexts Shared . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Figure C-8 Final Two Window XCode Contents . . . . . . . . . . . . . . . . . . . . . . . . 304
Figure C-9 Visible at Launch Enabled . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
Figure C-10 Context Sharing: Two Windows Demonstrating
Common Shared Data and Unshared (Clear Color)
Context Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
Figure C-11 Results of Rendering to an FBO and Texturing a
Quad with That Result . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

Figures xvii
This page intentionally left blank
Tables

Table 2-1 Versions of OpenGL in Which Extensions Were Promoted


to Core OpenGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Table 2-2 Mac OS Hardware Renderer Support for Versions of OpenGL . . 12
Table 2-3 Timeline of Mac OS X Releases, Drawing APIs,
and Windowing APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Table 3-1 Processor Type and Graphics Bus Pairing . . . . . . . . . . . . . . . . . . . . . . 30
Table 4-1 Mac OS X Versions and Code Names . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Table 5-1 API and Framework Locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Table 6-1 CGL Pbuffer Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Table 7-1 Locations of AGL Headers and Frameworks . . . . . . . . . . . . . . . . . . . 91
Table 7-2 Pixel Format Specifiers for Use with
aglChoosePixelFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Table 7-3 Tokens for Use with aglDescribeRenderer . . . . . . . . . . . . . . . . 107
Table 7-4 AGL Pbuffer Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Table 8-1 AppKit Cocoa Headers, Frameworks, and Overview . . . . . . . . . . 122
Table 8-2 Selection Policies and Behaviors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Table 8-3 Common Pixel Format Qualifiers for Use with
NSOpenGLPixelFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Table 9-1 GLUT Headers, Frameworks, and Overview . . . . . . . . . . . . . . . . . . 164
Table 9-2 glutInitDisplayMode Bit Field Tokens . . . . . . . . . . . . . . . . . . . . 169
Table 9-3 glutInitDisplayString Policy and Capability Strings . . . . 170
Table 10-1 NSBitmapImageRep Accessors for OpenGL Texture Data . . . . 179
Table 11-1 Pixel Format Buffer Selection Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
Table 12-1 glGetString Tokens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
Table 13-1 Preprocessor Tokens for Extension Usage . . . . . . . . . . . . . . . . . . . . . 260
Table C-1 AppKit Cocoa Headers, Frameworks, and Overview . . . . . . . . . 284
Table C-2 Selection Policies and Behaviors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Table C-3 Common Pixel Format Qualifiers for Use with
NSOpenGLPixelFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

xix
This page intentionally left blank
Examples

Example 4-1 Power Management on OS X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35


Example 6-1 CGLChoosePixelFormat Usage . . . . . . . . . . . . . . . . . . . . . . . . . 58
Example 6-2 Creating and Inspecting Renderer Info Objects . . . . . . . . . . . . 68
Example 6-3 Testing for Full-Screen Rendering Support . . . . . . . . . . . . . . . . 82
Example 7-1 Headers for OpenGL and AGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
Example 7-2 AGL OpenGL Initialization and Draw Functions . . . . . . . . . . 92
Example 7-3 AGL Full-Screen Application main Method . . . . . . . . . . . . . . . 93
Example 7-4 AGL Windowed main Example . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Example 7-5 AGL Renderer Query Example . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Example 7-6 Sharing One Context with Another in AGL . . . . . . . . . . . . . . 108
Example 7-7 Copying the Context State Between Two Contexts
in AGL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Example 7-8 Pbuffer and Windowed Context Creation in AGL . . . . . . . . . 111
Example 7-9 OpenGL Context Initialization, Referencing a Pbuffer
as the Texture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
Example 7-10 AGL OpenGL Initialization and Draw Functions for
Copy-Texture Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Example 7-11 AGL Copy-Texture Render Call Sequence . . . . . . . . . . . . . . . . 116
Example 7-12 AGL Initialization and Draw for a Framebuffer Object
and Main Buffer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Example 8-1 Configuration of an OpenGL View in initWithFrame . . 127
Example 8-2 Cocoa drawRect Rendering Method with Sample
OpenGL Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Example 8-3 MyView.h Final Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Example 8-4 MyView.m Final Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Example 8-5 Singleton Class Declaration for Managing a
Shared Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Example 8-6 Singleton Class Implementation for Managing a
Shared Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
Example 8-7 Initialization of an OpenGL View with a Shared Context . 147
Example 8-8 Capturing and Releasing the Display. . . . . . . . . . . . . . . . . . . . .150

xxi
Example 8-9 Custom Controller Event-Handling Loop in a
Full-Screen Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Example 8-10 Custom View Header for FBO Example Code . . . . . . . . . . . . 154
Example 8-11 OpenGL Setup for FBO Rendering . . . . . . . . . . . . . . . . . . . . . . . 155
Example 8-12 Cocoa drawRect Routine for FBOs . . . . . . . . . . . . . . . . . . . . . . 156
Example 8-13 Cocoa Draw Methods for Contents of the FBO and the
Final Render . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Example 8-14 Custom View Header for Copy-to-Texture
Example Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Example 8-15 OpenGL Setup for Copy-to-Texture Rendering . . . . . . . . . . . 159
Example 8-16 Cocoa drawRect Routine for Copy-to-Texture
Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Example 9-1 GLUT Header Inclusion on the Mac . . . . . . . . . . . . . . . . . . . . . . 167
Example 9-2 Basic GLUT Sample Application . . . . . . . . . . . . . . . . . . . . . . . . . 168
Example 9-3 Initializing a GLUT Visual Using a String . . . . . . . . . . . . . . . . 171
Example 10-1 Two Sample NSImage Initialization Methods . . . . . . . . . . . . 174
Example 10-2 Initialize NSImages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Example 10-3 Resizing an NSImage to a Power of Two . . . . . . . . . . . . . . . . . 177
Example 10-4 Extracting a Bitmap from an NSImage . . . . . . . . . . . . . . . . . . . 179
Example 10-5 Initialization and Creation of an NSImage . . . . . . . . . . . . . . . 179
Example 10-6 Downloading an NSImage as an OpenGL Texture . . . . . . . 180
Example 10-7 Capturing OpenGL Data as an NSImage . . . . . . . . . . . . . . . . . 182
Example 10-8 Converting a Bitmap to an NSImage . . . . . . . . . . . . . . . . . . . . . 183
Example 10-9 Initialize QTMovie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Example 10-10 Draw Rectangle Method Applying Movie Frames . . . . . . . . 187
Example 11-1 Querying Shader Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
Example 11-2 Enabling or Disabling the Multithreaded GL Engine . . . . . 204
Example 11-3 Partial Buffer Object Flushing . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Example 11-4 Immediate Mode Vertex Submission: Begin/End . . . . . . . . . 210
Example 11-5 Immediate Mode Vertex Submission: Vertex Arrays . . . . . . 211
Example 11-6 Immediate Mode Vertex Submission: Vertex
Buffer Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Example 11-7 Inefficiencies of Not Using Vertex Array Objects . . . . . . . . . 214
Example 11-8 Using Vertex Array Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Example 11-9 Using Vertex Array Range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Example 11-10 Apple Fence Extension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Example 11-11 Double-Buffering Vertex Data Using the
APPLE vertex array range Extension . . . . . . . . . . . . . . . . 217

xxii Examples
Example 12-1 Unpack the OS X Version Number . . . . . . . . . . . . . . . . . . . . . . . 249
Example 13-1 Querying for Extensions in a Valid OpenGL Context . . . . . 261
Example 13-2 Querying the OpenGL Version Number . . . . . . . . . . . . . . . . . . 262
Example 13-3 Querying for OpenGL Shader Extensions . . . . . . . . . . . . . . . . 263
Example 13-4 Creating a Dictionary of All Extensions . . . . . . . . . . . . . . . . . . 264
Example 13-5 Storage for the Discovered Symbols . . . . . . . . . . . . . . . . . . . . . . 266
Example 13-6 Opening a Segment for Symbol Lookup . . . . . . . . . . . . . . . . . . 267
Example 13-7 Looking Up Symbols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Example 13-8 Our Application’s OpenGL Initialization Code . . . . . . . . . . . 267
Example 13-9 GLEW Headers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Example 13-10 Our Application’s OpenGL Initialization Code
Using GLEW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Example 13-11 Query for Shader Extensions Using GLEW . . . . . . . . . . . . . . . 273
Example 13-12 Query for OpenGL Version Information Using GLUT . . . . 274
Example 13-13 Query for Shader Extensions Using GLUT . . . . . . . . . . . . . . . 274
Example C-1 Configuration of an OpenGL View in initWithFrame . . 288
Example C-2 Cocoa drawRect Rendering Method with Sample
OpenGL Content . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Example C-3 MyView.h Final Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Example C-4 MyView.m Final Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Example C-5 Singleton Class Declaration for Managing
a Shared Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Example C-6 Singleton Class Implementation for Managing a
Shared Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Example C-7 Initialization of an OpenGL View with a Shared Context . 306
Example C-8 Capturing and Releasing the Display . . . . . . . . . . . . . . . . . . . . 310
Example C-9 Custom Controller Event-Handling Loop in a
Full-Screen Context . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Example C-10 Custom View Header for FBO Example Code . . . . . . . . . . . . 314
Example C-11 OpenGL Setup for FBO Rendering . . . . . . . . . . . . . . . . . . . . . . . 315
Example C-12 Cocoa drawRect Routine for FBOs . . . . . . . . . . . . . . . . . . . . . 316
Example C-13 Cocoa Draw Methods for Contents of the FBO and the
Final Render . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Example C-14 Custom View Header for Copy-to-Texture
Example Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
Example C-15 OpenGL Setup for Copy-to-Texture Rendering. . . . . . . . . . .319
Example C-16 Cocoa drawRect Routine for Copy-to-Texture
Rendering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

Examples xxiii
This page intentionally left blank
Preface

The Mac is a computing platform that virtually defines ease of use, consistency,
and effortless computing. The story of OpenGL on the Mac has been, shall
we say, a bit more complex. With the arrival of OS X, the Mac platform sup-
ports even more ways of constructing OpenGL applications for the Mac. While
there has been an apparent proliferation of OpenGL interfaces for the Mac, the
platform itself has stabilized architecturally and programmatically and now
offers the best developer and user experience in the industry for develop-
ment of graphics applications. This is not just a statement of preference but
an observation that, in many ways, the Mac is an OpenGL platform with-
out peer. The Mac is a fun and efficient platform on which to develop appli-
cations, thanks to the set of OpenGL drivers at its core that support a rich
and deep feature set, great performance, and deep integration in OS X. The
Mac has excellent and usable tools for quickly monitoring OpenGL behavior,
rapidly prototyping shaders, and digging deep to analyze OpenGL behavior
in the application and driver. The Mac makes OpenGL development efficient
and fun.
Although the development tools and environment are powerful and helpful,
many corners of OpenGL on the Mac remain under-documented. A developer
must choose among several development languages, user interface (UI) tool-
kits, window managers, and additional Mac APIs such as QuickTime and Core
Image, yet still ensure that his or her software runs well on a variety of target
Mac platforms. All of these factors can make using OpenGL on the Mac a chal-
lenging task even for developers who have been writing OpenGL applications
on other platforms for years.
This book was put together with an eye toward simplifying and clarifying the
ways in which OpenGL can be used on the Mac. It is our hope that by codifying
all the information available about OpenGL on the Mac in one place and by
presenting each interface with clarity and depth, developers will have a one-
stop reference for all things OpenGL on the Mac.

Who Should Read This Book?


This book is intended for OpenGL programmers who wish to develop applica-
tions on Mac OS X. We target two categories of OpenGL programmers: those

xxv
who are new to OpenGL on the Mac and those who want to explore the specific
benefits of writing OpenGL programs on the Mac.
For those who are new to OpenGL on the Mac—either existing Mac developers
or those coming from other platforms—we provide advice on cross-platform
issues, portable interfaces, and ideas about choosing native interfaces for the
Mac. Existing Mac developers will find a single-source reference guide to all
OpenGL interfaces on the Mac. For developers wishing to explore the power
and richness of the Mac, we provide complete details on Mac-specific OpenGL
extensions and ways of integrating other Mac APIs (such as QuickTime and
Core Image) into applications.

Organization
This text is intended to be useful as both a programming guide and a reference
manual. The text contains several chapters focused on OpenGL on the Mac and
other chapters that cover related graphics information. A few appendices are in-
cluded to cover supplemental information in detail. The chapters are organized
as follows:
Architecture Chapters 1 through 4 describe the hardware and software archi-
tectures of the Mac. This part of the book also presents an introduction to
performance considerations as they relate to architecture.
Configuration and Integration Chapter 5 explores the interfaces to OpenGL on
the Mac in detail. Those new to OpenGL on the Mac should begin here.
CGL, AGL, Cocoa, GLUT Chapters 6 through 9 explore details behind the in-
dividual APIs. Each API is covered in detail in its own chapter, and the APIs
are compared and contrasted in each chapter. These chapters form the core
of this book.
Interoperability Chapter 10 collects a variety of interesting OpenGL and other
Mac API integration ideas. This chapter describes how to incorporate video
in an application with QuickTime, perform image effects on textures or
scenes with Core Image, and process CoreVideo data in an application.
Performance Chapters 11 and 12 describe the basics of analyzing performance
of OpenGL applications and offer tips about where common problems may
surface and how they might be resolved. Analysis, tools, architecture, data
types, and solutions are covered.
Extensions Chapter 13 presents a guide to detecting, integrating, and using
OpenGL extensions. This chapter introduces extension management princi-
ples and tools and provides details on how to perform such management
specifically on the Mac.

xxvi Preface
Additional Resources
As both OpenGL and the Mac platform evolve, so must developers’ appli-
cations. At our website, www.macopenglbook.com, we provide our example
OpenGL code as well as other OpenGL-related resources. Additionally, we track
and provide corrections for any errata and typos. Although we aspire to Knuth-
like greatness, we are open to the idea that bugs may yet lurk within these pages.
Should you find a possible gaffe, please bring it to our attention through our
website.
This book has been a project long in the making, and rumblings of Leopard,
Mac OS X 10.5, have been part of our plan since the beginning. However, due to
information embargoes, the paucity of information available to the public, and
publishing timelines, our best efforts at incorporating final, released Leopard-
specific details are thwarted. Although we’ve accounted for most major changes
to OpenGL programming for Leopard in this book, there was still some de-
gree of flux for Leopard features at the time this book was published. Never
fear, we’ve put together a detailed Leopard change synopsis for OpenGL, and
accounted for the flux in Leopard on our website in an extra chapter. You’ll find
this bonus chapter at our website: www.macopenglbook.com.
A few words on Leopard that we can say at this time with authority: First, Leop-
ard will provide OpenGL 2.0 and OpenGL ES support. OpenGL 2.0 is a great
baseline for OpenGL developers, providing the most modern of OpenGL foun-
dations upon which to develop. Also of interest is the inclusion of OpenGL ES
in this release. ES stands for embedded system, and is a nice, stripped-down ver-
sion of OpenGL, largely targeting handheld devices. At this time, if writing an
application for a desktop system, it would still be most sensible to target
OpenGL 2.0. However, if you’re building and testing a cross-platform device
that might be used for handheld devices, OpenGL ES would be a good OpenGL
SDK to develop against. Second, Apple’s tools for development and debugging
are a lot more comprehensive in Leopard. XRay, in particular, integrates a vari-
ety of debugging tools in one information view, making it much easier to target
certain types of bottlenecks, specifically those involving data transfer. Finally,
Leopard brings a lot of bug-fixes and feature enhancements. We’ve got informa-
tion on bits and pieces of the Leopard OpenGL throughout the book. But you’ll
have to read about the final and released version in our Leopard chapter on
the website.
So, once you have this book in your hands, please go to the website and get the
addendum. We think you’ll be pleased with the detail and additional informa-
tion it offers on the released version of Leopard. We consider it the definitive
source of independent information for OpenGL on Leopard, Mac OSX 10.5. Get
it by going to: www.macopenglbook.com.

Preface xxvii
This page intentionally left blank
Acknowledgments

The first edition of this book owes many thanks to many people, beginning
with Bob’s good friend, Dave Shreiner. Dave and Bob have taught numerous
SIGGRAPH courses together over the years and worked together at SGI. Dave
encouraged Bob to take on this project with Addison-Wesley and was instru-
mental in getting it off the ground and providing advice, reviews, and encour-
agement along the way.
The reviewers of the book performed heroic feats of editing and have made
this book much better for their efforts. Many thanks go to Dave Shreiner,
Paul Martz, Thomas True, Terry Welsh, Alan Commike, Michel Castejon, and
Jeremy Sandmel.
Thanks, too, to the many other friends and relatives who contributed ideas, en-
couragement, and support. Finally, the authors would like to individually thank
a few people.

J. D.’s Acknowledgments
I cannot fully express my gratitude for the support of my wife Samantha.
She has been with me for the duration of this challenging project and always
responded to the rough patches with compassion and a smile.
I also wanted to extend a special thanks to my friend Alex Eddy who reviewed
this material with unmatched expertise on the subject matter of the current
OS X OpenGL implementation, its history, and its incarnations.
Finally, I wanted to thank my parents Andrew and Sue, who never wavered in
their support of my education and career. From their visionary gift in 1979 of
a Timex Sinclair computer that started me down the road to software develop-
ment to the present day, they have always been at my side.
Bob’s Acknowledgments
Thanks very much to my wife, Kim, for her support, encouragement, and love.
She’s been my muse and a voice of reason throughout the often arduous pro-
cess of shepherding a book from inception to publishing. I’d also like to thank
my parents for getting me raised well, and without major injury, and for main-
taining their encouragement throughout my life. Finally, thanks to my cats for
keeping me warm, grounded, and focused on the essentials of life: food, sleep,
and play.

xxix
This page intentionally left blank
About the Authors

Bob Kuehne is a graphics consultant and entrepreneur and currently works


as the head of a graphics consultancy, Blue Newt Software. Blue Newt works
with clients around the world to enhance their 3D graphics applications. Blue
Newt helps clients move from fixed-function programming to shader appli-
cations, from single- to multi-pipe, multi-display systems, and from baseline
OpenGL to scenegraphs as their needs change. Bob spends most of his time in
modern OpenGL working with clients to design new applications, develop new
features, and do performance engineering.
Before Blue Newt, Bob worked for nearly eight years at SGI in a variety of
roles. His work included leading the OpenGL Shader project, creating demos
for high-end multi-pipe graphics systems, and helping SGI developers create
high-performance, high-quality applications.
Bob has worked in the graphics industry and with graphics systems for more
than two decades and has been developing in OpenGL since it first existed. He
has been a developer on the Mac since the early 1990s, when he was finally able
to afford one. Bob has presented at numerous conferences over his career, in-
cluding SIGGRAPH, Graphic Hardware, SGI Developer Forum Worldwide, and
(the ex-conference) MacHack. He currently teaches OpenGL and scenegraph
training courses around the world as part of his work for Blue Newt.
When Bob is able to be pulled away from his Mac and graphics work, you’ll find
him either playing volleyball or sailing with his wife. Please don’t hesitate to
email him: ([email protected]) or visit his website (http://www.blue-
newt.com).
J. D. Sullivan is an OpenGL driver engineer who has been writing graphics soft-
ware professionally for more than 15 years. His experience with OpenGL began
with writing IrisGL applications for a finite element modeling and broadcast
animation lab in 1992. His experience developing on the Macintosh platform
began in 1988 with Symantec’s Think C and a 16 MHz SE/30 that boasted 4MB
of RAM and 1MB of video memory.
After three years working on a distributed renderer for the FEM and broad-
cast animation lab, J. D. joined Silicon Graphics, Inc., where he first focused on
performance and feature differentiation of graphics applications from ISVs that
were critical to SGI’s business. A considerable portion of this work centered

xxxi
on medical and GIS imaging. He was one of the original four designers and
implementers of SGI’s Volumizer API, and he earned a design patent for high
performance modulation of 3D textures. He then moved to SGI’s Consumer
Products Division, where he worked as part of the OpenGL software team dur-
ing the bring-up of both the Cobalt and Krypton graphics chipsets.
Since SGI, J. D. has worked on the Mac as his primary development platform.
He has been an OpenGL driver engineer for more than five years and serves on
the OpenGL Architecture Review board.

xxxii About the Authors


Chapter 1

Mac OpenGL
Introduction

Welcome to OpenGL on Mac OS X! This book is designed to be your one-stop


resource for all things OpenGL on the Mac. We wrote this book for Mac OpenGL
developers such as you. We wrote it for ourselves, too—let us explain. We have
always cherished having a comprehensive programming guide in hand that
provides the continuity and context of programming environments. We also ap-
preciate the concise, bulleted information found in most reference guides. The
analog learning experience of sitting back in a comfortable chair with a clear
mind and a cup of your beverage of choice is a great way to deeply understand
the intention and usage of an API or programming environment. We invite you
to sit back and enjoy learning what the exceptional pairing of the Mac OS and
OpenGL have to offer.
This book will serve both existing Mac developers and those new to the plat-
form. We are living proof of the former case: We’ve referenced it ourselves dur-
ing the writing of the book itself! We’ve consolidated a lot of information from a
variety of sources and our own experience into one complete guide. Developers
who are new to the Mac platform should appreciate both the comprehensive na-
ture of the material and the many comparisons and contrasts drawn with other
programming environments and operating systems.
Given the long history of OpenGL on the Mac (which we discuss later in the
book), you may be reading this book with an older application as your focus.
With this in mind, we’ve included content covering all OpenGL-related APIs in
OS X. The older APIs, however, may not be the preferred path for new develop-
ment on the Mac, and we’ll guide you accordingly. We cover all major OpenGL
window-system APIs on the Mac in depth, but with enough guidance that even
first-time Mac developers can get up to speed quickly.

1
Whatever type of developer you are, whatever the age of your code, and no
matter how you arrived at this title, we welcome you and hope you find our
book useful.

Why the Mac?


For those of you who are new to the Mac platform, we’d like to spend a moment
explaining a few of the reasons why the Mac makes a great platform on which to
develop your applications. Specifically, we’d like to explore some of the reasons
that you would target Mac OS X for a new OpenGL application.
The Mac has had a long and rich history. In fact, Apple recently celebrated its
thirtieth anniversary. The Mac has existed for more than 20 years of that 30-year
span and has itself undergone many transformations over that time. Through-
out it all, the Mac platform has exhibited a few key characteristics. Chief among
those is one characteristic in particular that defines the Mac—style. You prob-
ably thought that we’d say “simplicity” or “consistency,” but neither is as core
to the Mac as style. You’d be right, however, in assuming that both simplicity
and consistency are two key aspects of what makes developing for and using
the Mac such an exceptional experience. And it’s true that both consistency and
simplicity are aspects of the overarching style that is the Mac. Nevertheless,
we’d be doing a disservice to the Mac to suggest that there isn’t substance be-
hind that style, because there is. From its solid BSD underpinning through years
of evolution in software APIs, the Mac has remained a robust platform.
From a user perspective, the Mac has always been, at its core, a smooth, fun,
and stylish user experience. And now, with OS X, the Mac is also one of the best
development platforms available.
From the developer side of the equation, things have not always been so elegant,
of course. The Mac OS of the pre-OS X days was a much more “interesting”
development experience. Beginning from their roots in Pascal and through their
evolution into the C language, the OS 9 and its brethren from earlier days were
a lot more challenging. Partly in response to these difficulties, NextStep, a start-
up outgrowth of Apple in the early 1990s, worked hard to simplify the modern
development experience, and the results of its work are now available in Mac
OS X.
For us to describe the entire development history of the Mac would be a book
by itself, but there’s one key trend that the Mac has been tracking, on the
development side as well as the userside: style. The latest Mac APIs for user
interface (UI) development, for core application development, and, of course,
for graphics development are really quite sane, well integrated, and fun to use.
The intuitive user experience for which the Mac has always been known is for
now a cornerstone of the development experience as well. The developer tools,

2 Chapter 1: Mac OpenGL Introduction


such as XCode, Shark, and the various OpenGL debuggers and analyzers, bring
a sense of efficiency, fun, continuity, and style to today’s Mac developers.
So, back to the question of this section: Why the Mac? The authors of this
book have developed applications for numerous platforms over the years—
from Windows boxes, to generic Unix boxes, to SGI machines, Apple IIs, embed-
ded systems, and many others. It’s been our experience that, regardless of which
platform you develop for, great tools and a great user experience make for great
software. The answer to “Why the Mac?” is simple—the platform. Both elegant
hardware and solid software make the goal of creating great software much
easier to achieve. Once you’ve developed on the Mac, you’ll probably want to
develop all of your applications there first. You can get results so much more
quickly, and with so much better overall quality, that it’s truly eye-opening.1 If
you’re not initially a member of our target audience for this book, we’d sug-
gest that you give the Mac a try, developing a modern application from start to
finish, and see if you don’t agree.

Why OpenGL?
If you’re reading this book, chances are that you already know why you are us-
ing OpenGL. But if you’re reading this book and trying to make some decisions
about which 3D API to use, we’ll say a few words on why you should consider
OpenGL.
The reasons are very similar to those as to why you’d choose the Mac platform.
To reiterate, ease of development, ease of use, and solid, stylish tools make the
Mac development process easy. OpenGL is no exception.
OpenGL has a long history, like the Mac. Although the history of OpenGL is
covered in more detail later in the book, here’s an abbreviated version. OpenGL
was developed from the experience and foundation of IrisGL, an API for 3D
graphics first developed by SGI. OpenGL was developed to bring a fresh set
of eyes to the task of creating a clean, modern, and portable graphics API. The
designers of OpenGL did an excellent job with an API that is nicely orthogonal
in function, high performance in execution, and extensible in design.
It should be mentioned, too, that OpenGL is the only graphics API that exists on
virtually every hardware platform you might want to develop, from cell phone
to supercomputer. OpenGL exists on operating systems from Symbian to Mac
OS X, and many others. No other graphics API has that sort of ubiquity, so if

1. We’re not blind to the problems, mind you, but Apple is very responsive on the bug-fix side of
things. And no, the Mac platform is not perfect: There are plenty of legacy APIs to be had. However,
if you decide to write a modern Mac application, the development experience is hands-down better
than on any other platform. It’s quite simply a lot of fun.

Why OpenGL? 3
you have visions of developing for multiple platforms, OpenGL is really your
only option. Don’t feel too bad about that mandate, though, because once you
start working with OpenGL, you’ll see that its performance is as good as any
API out there.
In fact, from your perspective as a developer, one of the key strengths of
OpenGL is the way in which you can learn core techniques once and then reap-
ply them many times. For example, the way that you create and modify indi-
vidual and batched graphics primitives is something that you can learn once
and then apply to vertices, textures, shaders, and more. In many ways, OpenGL
is a great match for the Mac, because both allow you to learn techniques once
and reapply those same techniques repeatedly to many different object-types.
Consistency of technique is a key aspect of why it is so easy to be productive on
the Mac, and of why OpenGL is a great API to use.
Using an open standard graphics API like OpenGL means that its design today
and in the future will incorporate all of the rich and diversified design consid-
erations from various industry interests that only open standards can. Indeed,
these diversified corporate and educational interests contributions are the very
reason OpenGL runs on the widest array of devices. Furthermore, because de-
sign decisions are better decoupled from proprietary interests, the result is quite
simply a better and more generalized design.
If you’re new to the base OpenGL API, we won’t be much help to you in this
book because we’re focused on Mac-specific infrastructure. However, there are
other great books and resources on the subject out there. The canonical refer-
ence, the so-called Red Book [22], and the OpenGL website [2] provide a good
foundation for OpenGL developers. There are also other, more compact guides,
such as the recent OpenGL R
Distilled [19]. The bibliography lists a few other ref-
erence books of note, including those describing in detail how to use OpenGL
on other platforms [15, 18]. This book is a companion to those resources, focus-
ing on the infrastructure, performance, and integration of OpenGL on the Mac.

The Book
What we describe in this book is the essence of OpenGL usage and integration
on the Mac. We won’t try to motivate you to choose the Mac or OpenGL fur-
ther, but will rely on you to make your own informed decision after reading our
text. We will describe in detail the rendering architecture used by Mac OS X and
note how OpenGL integrates into it. We will explore in depth each of the major
OpenGL interface APIs on the Mac, showing how to use each in a sample appli-
cation and how to customize those applications for your specific needs. We will
also explore the surrounding OpenGL infrastructure on the Mac, from tools to
secondary APIs used to get data into OpenGL. Finally, we will attempt to bring

4 Chapter 1: Mac OpenGL Introduction


a sensibility and a practicality to all of our discussions—not trying to explain
everything there is in all APIs, examples, and tools, but just what’s necessary
and useful. We approach this entire topic from the perspective of an application
developer who is trying to get a high-performance, great application developed
on the Mac. OpenGL on the Mac is a large domain, but we have a good filter for
what is important and have written this book with an eye toward ensuring the
reader’s enjoyment of this learning experience.

The Book 5
This page intentionally left blank
Chapter 2

OpenGL Architecture
on OS X

Overview
The Mac hardware platform has historically varied widely with regard to CPU,
I/O devices, data busses, and graphics cards. The transition to Intel processors
brings yet another step in this evolution to developers, who now have ano-
ther Mac platform to consider with many different specifications. Despite the
fact that the underlying hardware on the Mac differs so widely, the software
architecture of OpenGL provides programmatic consistency for graphical ap-
plications across these varied configurations. OpenGL provides an abstraction
layer that insulates application developers from having to develop specific logic
for the unending array of systems and graphics devices.
At present, the Mac OS OpenGL implementation supports graphics devices
from four vendors: ATI, Intel, NVIDIA, and VillageTronic. And, of course, the
graphics drivers support either PowerPC or Intel CPUs feeding these devices.
The Mac also supports a virtual graphics device that processes OpenGL ren-
dering commands on the CPU of the system. This virtual device is canonically
known as the “software renderer.”
In this chapter, we’ll explore the software architecture of the OpenGL on the
Mac, including the history of OpenGL itself and the way in which the Mac
software architecture supports flexible graphics application development using
this API.

About OpenGL
To understand OpenGL on the Mac, let’s begin by looking back at the evolu-
tion of OpenGL itself. Silicon Graphics (SGI) began development on OpenGL
in 1990, with version 1.0 of the software being released in 1992. OpenGL was

7
a logical evolution from its predecessor, IrisGL—named in accordance with the
graphics hardware for which it was built. IrisGL was initially released by SGI in
1983. It included all of the necessary API entry points that, unlike OpenGL, han-
dled windowing system tasks unrelated to actual graphics pipeline rendering.
SGI soon realized that to grow its graphics workstation market share, the com-
pany needed to use a graphics API that was an industry standard. Ultimately,
the applications that independent software vendors (ISVs) were producing were
what sold the hardware they were building. By making IrisGL into an open
standard (OpenGL), SGI could greatly help lower the ISVs’ development costs
to reach multiple platforms, which in turn would encourage them to adopt the
use of the OpenGL API.
To make OpenGL an open standard, SGI formed the OpenGL Architecture
Review Board (ARB) in 1991 to oversee and develop the specification with a
broad range of industry interests in mind. The ARB includes both software- and
hardware-focused vendors in the graphics industry with an interest in further-
ing an open graphics API standard.
In its simplest form, OpenGL is a specification document. To develop the
OpenGL standard, a formal process has been established by which new func-
tionality may be added to the OpenGL specification. But where do these exten-
sions come from? Who decides they want one, and how do those new extensions
get put into the standard?
New extensions to OpenGL are typically created by individual companies or
organizations that are interested in including the new extension in the ver-
sion of OpenGL they ship. These extensions are known as vendor extensions.
They are specific to the company that created them and are named accordingly.
For instance, an extension unique to Apple is the GL APPLE texture range
extension. Other extensions are named for the companies that formulated and
specified them—for example, SGI, 3DLABS, or ATI.
Often ARB member companies will create parallel extensions—that is, two ex-
tensions with essentially the same functional purpose, but different interfaces.
If these companies wish to collaborate on consolidating these similar specifi-
cations into a single unified proposal, they will often create a working group
within the ARB so as to select the best aspects of each proposal and merge them
into one. When an extension is supported by more than one ARB member, it is
called an EXT extension. The GL EXT framebuffer object extension, which
is defined to do off-screen rendering, is an example of such an extension.
If a vendor or an EXT extension gains enough favor with the voting ARB mem-
bers, it can be put to a vote to approve it as an ARB extension. With the approval
of a two-thirds majority of the voting ARB members, the extension can gain ARB
status. Often, vendor extensions go through a process of gaining acceptance

8 Chapter 2: OpenGL Architecture on OS X


IrisGL Introduced

OpenGL 1.0

OpenGL 1.1

OpenGL 1.2

OpenGL 1.3

OpenGL 1.4

OpenGL 1.5

OpenGL 2.0

OpenGL 2.1
1983 1992 1995 1998 2001 2002 2003 2004 2007

Figure 2-1 OpenGL Version History Timeline

as an EXT extension by other vendors before being promoted to the core


specification. Each of these stages of the extension process allows for indus-
try “soak time” to expose the extension’s strengths and weaknesses. At every
stage of the process—vendor, EXT, and ARB—the review board can (and often
does) make changes to remedy any weaknesses that were uncovered through
industry exposure.
As extensions are integrated into the core and other clarifying edits are made
to the OpenGL specification, the document is revised and its version number
updated. Version 1.0 of this specification was released in 1992, and Figure 2-1
details the timeline of versions since that time.
Each new revision of the core OpenGL API promoted extensions to core func-
tionality, as shown in Table 2-1.

Table 2-1 Versions of OpenGL in Which Extensions Were Promoted to Core


OpenGL
OpenGL Version Extension
1.1 Blending logical operations
GL EXT blend logic op
Framebuffer-to-texture copies
GL EXT copytexture
Polygon offset
GL EXT polygon offset
Subtexturing
GL EXT subtexture
Internal formats and component sizing for textures
GL EXT texture
Texture proxying
GL EXT texture
Replacement of output fragments by source texture values
GL EXT texture
Continued

About OpenGL 9
Table 2-1 Versions of OpenGL in Which Extensions Were Promoted to Core
OpenGL (Continued)
OpenGL Version Extension
Texture objects
GL EXT texture object
Vertex arrays
GL EXT vertex array
1.2.1 ARB extensions introduced to promotion process
1.3 BGRA pixel format
GL EXT bgra
Range-bounded vertex draw elements
GL EXT draw range elements
Multisampling
GL ARB multisample
Multitexturing
GL ARB multitexture
Texture environment modes: Add, Combine, Dot3
GL ARB texture env {add|combine|dot3}
Texture border clamp
GL ARB texture border clamp
Transpose matrix
GL ARB transpose matrix
1.4 Automatic mipmap generation
GL SGIS generate mipmap
Blend squaring
GL NV blend square
Depth textures
GL ARB depth texture
Fog coordinates
GL EXT fog coord
Multiple draw arrays
GL EXT multi draw arrays
Point parameters
GL ARB point parameters
Secondary color
GL EXT secondary color
Separate blend functions
GL EXT blend func separate
Shadows
GL ARB shadow
Stencil wrap
GL EXT stencil wrap

10 Chapter 2: OpenGL Architecture on OS X


OpenGL Version Extension
Texture crossbar environment mode
GL ARB texture env crossbar
Texture LOD bias
GL EXT texture lod bias
Texture mirrored repeat
GL ARB texture mirrored repeat
Window raster position
GL ARB window pos
1.5 Buffer objects
GL ARB vertex buffer object
Occlusion queries
GL ARB occlusion query
Shadow functions
GL EXT shadow funcs
2.0 Programmable shading
GL ARB shader objects
GL ARB vertex shader
GL ARB fragment shader
Multiple render targets
GL ARB draw buffers
Non-power-of-two textures
GL ARB texture non power of two
Point sprites
GL ARB point sprite
Separate stencil
GL ATI separate stencil
2.1 Programmable shading
Updated shading language to 1.20
Pixel buffer objects
GL ARB pixel buffer object
sRGB textures
GL EXT texture sRGB

Mac OS X Implementation of the OpenGL Specification


Once an extension or a version of the specification has been completed and rati-
fied by the required organization, the company or organization that will sup-
port the extension must then implement it. Naturally, there is some amount
of delay between the publishing of a specification and a vendor’s implemen-
tation of that published specification. We’ll explore extensions in detail in
Chapter 13.

About OpenGL 11
Table 2-2 Mac OS Hardware Renderer Support for Versions of OpenGL

Mac OS Version OpenGL Version Renderer


10.2.8 Jaguar 1.3 Radeon 9600/9700/9800
Radeon 9000/9200
Radeon 8500
Radeon 7000/7200/7500
Geforce FX
Geforce 4 Ti
Geforce 3
1.1 Apple Generic Renderer
Geforce 2 MX/4 MX
Rage 128
10.3.9 Panther 1.5 Geforce 6800
Geforce FX
Radeon X800
Radeon 9600/9700/9800
1.3 Radeon 9200
Radeon 9000
Radeon 8500
Radeon 7000/7200/7500
Geforce 4 Ti
Geforce 3
1.1 Apple Generic Renderer
Geforce 2 MX/4 MX
Rage 128
10.4.10 Tiger 2.0 Apple Float Renderera
Radeon HD 2400/HD 2600
Radon X1600/X1900b
Geforce 8600M
Geforce Quadro FX 4500b
Geforce 6600/6800b
Geforce FXb
1.5 Radeon X800
Radeon 9600/9700/9800
1.3 Radeon 9200
Radeon 9000
Radeon 8500
Radeon 7000/7200/7500
Geforce 4 Ti
Geforce 3
1.2 GMA 950
1.1 Geforce 2 MX/4 MX
Rage 128
(Continued )

12 Chapter 2: OpenGL Architecture on OS X


Other documents randomly have
different content
N o n v l i n d e r (Ocneria monacha):—1, 2) Mannetjes.—3, 4, 5) Wijfjes.—6) Jonge rupsen.—7)
Volwassen rups.—8) Pop. Ware grootte.

De eik, die, gelijk bekend is, meer larven van Vlinders voedt dan eenige andere plant,
wordt in sommige streken geteisterd door een zeer merkwaardige en zonderlinge rups,
die meer aanspraak heeft op den naam van giftig te zijn dan eenige andere. Hare lange,
in een witte spits eindigende haren, die, naar het microscoop leert, van boven van takjes
voorzien zijn, bevatten mierenzuur, dat zelfs op een weinig gevoelige huid een hevig
brandend gevoel en jeuk teweeg kan brengen. Het ontbreekt niet aan voorbeelden, dat zij
in het spijskanaal van menschen of dieren een hevige ontsteking van de slijmvliezen
veroorzaakt hebben, die soms den dood ten gevolge had; Runderen gedroegen zich in
zulk een geval als dol. De rupsen, die deze gevaarlijke brandharen dragen, hebben de
zonderlinge gewoonte van gezamenlijk in een bepaalde orde uit te rukken naar de plaats
waar zij haar voedsel vinden en van hier in dezelfde orde naar het nest terug te keeren;
men noemt haar daarom p r o c e s s i e r u p s e n . Zij komen in Mei uit de eieren, die in
den vorigen zomer in hoopjes van 150 à 300 stuks aan de schors van een eikenstam
vastgekleefd werden, gemengd met de grijsbruine haren uit het viltachtige uiteinde van ’t
achterlijf van ’t wijfje. Reeds in den avond van haar geboortedag trekken zij uit—achter
elkander aan, wanneer zij in gering aantal voorkomen, in wigvormige orde, wanneer zij
talrijker zijn: één aan de spits, de volgende bij paren, bij drieën, bij vieren, enz.—naar de
kroon van den boom, om zich te verzadigen met de bladen, waarvan zij aanvankelijk
alleen de bovenzijde afvreten, gelijk alle zeer jonge rupsen doen. Evenals zij hier op
rijen gerangschikt eten, vormen zij na den maaltijd een soortgelijke “processie” om terug
te keeren naar een beschutte plaats van den stam, bij voorkeur naar een takgaffel of
tamelijk dicht bij den grond. Hier richten zij zich huiselijk in, zitten dicht
opeengedrongen, niet slechts naast, maar, als zij grooter geworden zijn, ook op elkander
en spinnen een los weefsel over zich heen. Aanvankelijk verwisselen zij vaak van
standplaats, later daarentegen behouden zij dezelfde. Daar in het spinsel de afgeworpen
huiden en voor een deel ook de uitwerpselen blijven hangen, wordt het voortdurend
dichter; van eenigen afstand ziet het er uit als een blaasvormige opzwelling van den
stam. Uit deze nesten worden de bij iedere vervelling afgeworpen brandharen door den
wind opgenomen en verstrooid, vallen neer op het gras, dat door het vee wordt
afgegraasd, of geraken, in de lucht zwevend, in de maag van de houthakkers, die hun
ontbijt of een ander maal gebruiken in de buurt van boomen, die door processierupsen
bewoond worden. “Ik herinner mij,” schrijft Dr. J. Th. Oudemans, “dat, ik meen in het
jaar 1878, de weg tusschen Nijmegen en Hees voor mensen noch dier straffeloos
begaanbaar was en zooveel mogelijk gemeden werd, aangezien de soort daar toen in
massa aanwezig was en de lucht met de fijne haren vervulde, waardoor het verkeeren op
dien weg inderdaad ernstige gevolgen had.” In ons oog doordringend, veroorzaken de
haren een pijnlijke ontsteking. Zoodra het donker wordt, verlaten de rupsen haar nest,
waarin men van onderen een opening opmerkt, om zich naar boven te begeven; zij doen
dit iederen avond, behalve op de beide ziektedagen, die met iedere vervelling gepaard
gaan. Soms ziet men over dag een “processie” op den grond; misschien zijn de rupsen
dan door gebrek aan voedsel genoodzaakt om haar boom en het hier aanwezige nest te
verlaten. Deze optocht levert een merkwaardig schouwspel op: als een donkeren band,
als een Slang, kronkelt zij zich en komt slecht langzaam vooruit. De volwassen rups
heeft een grooten, bruinzwarten kop en is 29 à 52 mM. lang, op den rug donker
blauwgrijs à blauwzwart, op de zijden en op den buik grijsachtig of groenachtig wit. Alle
ringen hebben een dwarsrij van roodbruine, lang behaarde wratten; de beide middelste
rugwratten zijn echter op de ringen 4 tot 11 vervangen door een groote, aan den omtrek
lange borstels dragende, roodbruine, plek (spiegel), die dicht bezet is met duizenden
korte, zeer gemakkelijk loslatende brandharen. De lange borstels, die zelf echte
brandharen zijn en zich voorover buigen, als de rups verontrust wordt, schuieren de korte
brandharen van het voorafgaande segment los en richten zich vervolgens weer op,
waardoor de giftige wapens zich door de lucht verspreiden. Om zich te verpoppen,
begeven alle rupsen zich op den bodem van het nest en maken hier reeksen van cocons,
die ieder weldra een donker roodbruine pop bevatten, welker buikringen scherpe randen
hebben. In Juli en Augustus komt hieruit de E i k e n p r o c e s s i e r u p s v l i n d e r
(Cnethocampa processionea), wiens effen, bruinachtig grijs kleed op de voorvleugels
eenige donkerder dwarslijnen vertoont, die duidelijker zichtbaar zijn bij het donkerder en
scherper geteekende mannetje dan bij het wijfje; de geelachtig witte achtervleugel heeft
een onduidelijke dwarsstreep. De “processierups”, schrijft Ritzema Bos, “werd tot
heden zoo goed als uitsluitend in Limburg, Brabant en Gelderland aangetroffen en wel in
de meeste jaren in gering aantal; enkele keeren echter trad zij in groote massa’s op. Dit
was o.a. in de jaren 1874 tot 1878 het geval in verschillende streken van Gelderland en
Noordbrabant. In den zomer van 1875 kwamen zij in de omstreken van Nijmegen in
groote menigte voor; zij vraten daar niet alleen de eikenboomen, maar ook al ’t andere
loofhout en de ooftboomen kaal en lieten zelfs de gewassen op den akker niet
onaangeroerd. In 1877 vertoonden zij zich in de nabijheid van Wageningen, waar zij
echter—zeker grootendeels ten gevolge van ’t vernielen harer nesten—later niet dan in
een gering aantal werden wedergezien.”

Tot dezelfde onderfamilie (Notodontina) rekent men nog eenige Vlinders, die vooral in
den larvetoestand de aandacht trekken, daar bij hare rupsen de plaats van de naschuivers
wordt ingenomen door 2 bovenwaarts gerichte, draadvormige aanhangsels. Uit elk harer
“gaffelspitsen” kunnen de bedoelde t w e e s t a a r t r u p s e n een nog langeren, dunnen
draad te voorschijn doen komen, die, als het koord van een zweep aan den steel, naar
beneden hangt. Zij toonen de “zweep”, gelijk de rups van den Koninginne-page den
nekgaffel, alleen wanneer zij echter verontrust worden. In rust nemen deze dieren een
hoogst zonderlinge houding aan op het blad van den door hen bewoonden struik of
boom.—Een van deze rupsen met verdacht uiterlijk is die van den G r o o t e n
H e r m e l ij n v l i n d e r (Harpyia vinula); men vindt haar vooral in Juli en Augustus op
wilgen of populieren. Zij is lichtgroen en heeft over den geheelen rug een violette
zadelvlek, die op den 7en ring aan weerszijden tot aan het ademgat afdaalt en door een
zuiver witten rand omgeven is. In Mei verlaat de Vlinder de huid van de overwinterende
pop; over dag zit hij zeer traag op stammen, palen en planken; zijn kleur is wit, op de
vleugels met gele aders, voor een deel uitvloeiende zigzaglijnen en vlekken (die
aanleiding gaven tot den Nederlandschen naam) op de vleugels.

De vreemdsoortigste van alle inheemsche rupsen is die van den bij ons zeldzamen
E e k h o o r n (Stauropus fagi); de Vlinder vliegt in denzelfden tijd van ’t jaar als de
vorige en komt met dezen in vorm overeen, doch heeft een bruinachtig grijze kleur.
Wegens de houding, die de lederkleurig, bruine, onbehaarde rups in den toestand van
rust aanneemt, draagt de soort den naam van Eekhoorn; het achter de buikpooten
gelegen deel van ’t lichaam is sterk gezwollen, naar boven en naar voren gekromd; het
wordt met den pluimstaart van het genoemde Zoogdier vergeleken. Ofschoon in
hoofdzaken met de vorige overeenstemmend, vertoont zij echter eenige afwijkingen, die
haar een ander voorkomen verschaffen. De twee vrij lange “staartstiften” aan het laatste
segment missen den uitstulpbaren draad, hoewel zij opgericht kunnen worden; de 6
buitengewoon sterk verlengde borstpooten herinneren sterk aan spinnepooten. Als de
rups verontrust wordt, gooit zij haar kop achterover, strekt de borstpooten en brengt ze in
trillende beweging. Men vindt haar in den herfst op beuken en eiken. De bruinzwarte
pop houdt verblijf in een vliezig spinsel tusschen twee afgevallen bladen en overwintert.
De muisgrijze Vlinder heeft 50 à 60 mM. vlucht en vliegt in Juli en Augustus.

De U i l e n (Noctuina) vormen een zeer soortenrijke familie, welker leden voor ’t


meerendeel slechts een middelmatige grootte hebben en die, met uitzondering van
eenige weinige geslachten, door overeenstemming van lichaamsbouw en door
eigenaardigheden van de teekening der vleugels (uilenteekening) duidelijk hun
verwantschap verraden. Hun lichaam is in den regel forsch gebouwd, het achterlijf aan
het einde meestal kegelvormig, het haarkleed dicht, op het borststuk en het achterlijf niet
zelden tot borstels van verschillenden vorm uitgegroeid. De soms behaarde, soms naakte
oogen schitteren in ’t donker. De borstelvormige sprieten zijn iets langer dan de halve
voorvleugel. Slechts bij enkele soorten komt de zuiger niet tot volledige ontwikkeling,
maar blijft week of ontbreekt zelfs geheel. De binnenrand van de krachtige voorvleugels
is steeds langer dan de zoom; meestal treft men 12 aders in deze vleugels aan. Bij het
beschrijven van de teekening maakt men gebruik van eenige algemeen aangenomen
uitdrukkingen, die met behulp van de nevensstaande, schematische figuur verklaard
zullen worden.

Dicht bij den wortel bevindt zich de h a l v e d w a r s l ij n (a); de beide g e h e e l e


d w a r s l ij n e n , de v o o r s t e (b) en de a c h t e r s t e (c), werden reeds dikwijls
genoemd; zij begrenzen het m i d d e l v e l d . Hierin komen 3 door haar kleur van haar
omgeving afwijkende v l e k k e n voor: de r o n d e v l e k (d), de n i e r v l e k (e), beide
in den regel van een lichtere kern voorzien, en de minder standvastig voorkomende,
eenvoudig door haar donkerder kleur gekenmerkte t a p v l e k (f). In het zoomveld merkt
men de g o l f l ij n (h) op, die er ongeveer midden doorheen loopt en het verdeelt in een
buitenste gedeelte, het f r a n j e v e l d , en een binnenste, de g e w a t e r d e b a n d ; de
buitenrand van het zoomveld heet f r a n j e l ij n . Aan de golflijn merkt men dikwijls 2
wortelwaarts uitstekende punten ( ) op, die p ij l v l e k k e n worden genoemd.
Onnoodig is het waarschijnlijk, te vermelden, dat al deze vlekken en lijnen niet altijd op
iederen vleugel zichtbaar zijn. De kortere en breedere achtervleugels zijn gewoonlijk
ongevlekt en somber gekleurd; zij worden meestal op het zoomveld allengs donkerder
dan aan den wortel; als zij een lichtere, sprekende kleur hebben (geel, rood, blauw), dan
ontbreekt in den regel ook de teekening niet, al bestaat zij slechts uit een
m i d d e n v l e k (maanvlek) op de middenader en soms een daarachter (nader bij den
zoom) gelegen b o o g l ij n en een f r a n j e l ij n . Een dergelijke teekening kan
voorkomen aan de onderzijde, zoowel van de voorvleugels als van de achtervleugels, bij
gene nog vermeerderd met een tusschen boog- en franjelijn gelegen g o l f l ij n . In rust
bedekken de vleugels daksgewijs het achterlijf.

De rupsen van deze familie vormen 3 natuurlijke groepen.


Die van de eerste groep staan door haar in ’t oog vallende
beharing en het bezit van 16 pooten het naast aan de rupsen
der meeste Spinners en rusten, voor iedereen zichtbaar,
over dag op haar voederplant. De andere hebben eveneens
16 pooten, maar geen merkbaar haarkleed, houden zich
over dag meestal verborgen en komen alleen ’s nachts te
voorschijn om te eten; gedurende dit bedrijf kan de B o v e n z ij d e van den
verzamelaar ze bij ’t licht van een lantaarn gemakkelijker voorvleugel van een
vinden dan over dag; in aantal overtreffen zij alle overige. U i l (schematisch): (a) Halve
De rupsen van de derde groep eindelijk hebben 1 of 2 dwarslijn. (b) Voorste of eerste,
paren pooten minder, zijn naakt, zitten over dag vrij op (c) achterste of tweede geheele
hare voederplanten en vormt door de eerstgenoemde dwarslijn. (d) Ronde vlek. (e)
eigenschap een overgang van de Uilen tot de eerstvolgende Niervlek. (f) Tapvlek. (h)
familie, die der Spinners. Alle Uilenrupsen spinnen, Golflijn.
voordat zij zich verpoppen; zij maken echter geen
volslagen cocon; die, welke vrij op planten leven, rusten
hier of tusschen droge bladen op den grond, die van de tweede groep in den regel in den
grond, nadat zij de haar omgevende aarde samengesponnen of met behulp van haar
speeksel losjes samengelijmd hebben.

Men kent ongeveer 2500 soorten van Uilen, die over de geheele aarde verstrooid zijn.
Dat hierbij 1000 Europeesche soorten voorkomen, leidt tot de gevolgtrekking, dat ons
werelddeel in dit opzicht het nauwkeurigst onderzocht werd.
Tot de S p i n n e r a c h t i g e U i l e n (Bombycoidea) behoort de K r a k e l i n g (Diloba
coeruleocephala, fig. 3), zooals blijkt uit de sterk kamvormige sprieten van het mannetje
en het dikke, wollig behaarde lichaam van het wijfje. De chocolade-kleurige, in het
zoomveld lichtere voorvleugels vertoonen 2 zeer hoekige, aan den binnenrand zeer dicht
bijeenkomende, zwarte dwarslijnen. Door het ineenvloeien van de 2 groenachtig gele
voorste vlekken (waardoor de tapvlek, die een rond figuurtje vormt, met de ronde vlek
samenhangt), ontstaat een groote, lichte plek, die zich soms in 2 aan een bril of een
krakeling herinnerende vlekken verdeelt. De achtervleugels zijn witachtig grijs, aan den
binnenhoek donker gevlekt. Deze Vlinder begint in September te vliegen, en behoort dus
tot de “Herfstuilen”; over dag zit hij tegen boomstammen of schuttingen. Hij heeft 36 à
39 mM. vlucht. In het voorjaar verschijnen de dikke, blauwachtig witte rupsen, die gele
strepen en zwarte wratten vertoonen; zij hebben een blauwen kop en ontleenen hieraan
den soortnaam; haar voedsel bestaat uit bladen van pruimeboomen en sleedoornen. Als
de rups volwassen is, lijmt zij houtspaantjes, de kalk van een muur, enz. aaneen tot een
hulsel, dat aan onbeweeglijke voorwerpen bevestigd is en de stomp eindigende,
roodbruine pop nauw omsluit.

1) O r i o n (Moma Orion) met rups.—2) K w e e k g r a s u i l (Hadena basilinea) met rupsen.—3)


Mannetje van den K r a k e l i n g (Diloba coeruleocephala) met rups. Ware grootte.

Den O r i o n of S e l a d o n - u i l (Moma Orion, Diphtera Orion, fig. 1), een zeer


sierlijken Vlinder van 33 à 38 mM. vlucht, ziet men in Mei of Juni, dikwijls zelfs vrij
veelvuldig in het bosch tegen boomstammen zitten, steeds met den kop naar beneden
gericht. Het afstaand behaarde borststuk, welks schubben bij de vleugelwortels
zijdelingsche pluimen vormen, het achterlijf en de voorvleugels hebben een lichtgroene
grondkleur met zwarte en witte teekening. Op de voorvleugels bevinden zich 2
donkerzwarte dwarslijnen en in het midden van het zeer breede middelveld eenige
hieroglyphen, die gezamenlijk een derden dwarsband vormen. De grijsbruine, nader bij
den zoom donkerder achtervleugels hebben een witte, door een zwarte lijn verdeelde
binnenrandvlek en, evenals de voorvleugels, een zwart en wit gevlekt franjeveld. De
fraaie rupsen vindt men eenige weken later, aanvankelijk gezellig levend, op
eikenhakhout; zij laten zich aan een draad naar beneden zakken, als zij gevaar duchten.
Later leven zij eenzaam; voordat het ruwe jaargetijde aanbreekt, vervaardigt ieder zich
een stevig spinsel, waarin zij zich verpopt. De bovendeelen zijn fluweelachtig zwart, de
zijden geelachtig; op alle segmenten komen roode wratjes voor met lange, roodbruine
haren en op den rug van den 2en, 4en en 7en ring een groote, gele vlek.

De tot dusver behandelde Uilen en hunne verwanten zijn gedurende den rupstoestand in
den regel duidelijk behaard en leven bijna zonder uitzondering op houtige planten,
zonder zich te verbergen. De meeste naakte rupsen van de Uilen der tweede groep—de
E c h t e U i l e n (Noctuae genuinae)—krijgt men alleen te zien, wanneer men hare
schuilplaatsen weet op te sporen. Zij voeden zich bij voorkeur met grassen en andere
kruiden, hebben 16 pooten en kruipen in den grond om zich te verpoppen. Ook de
Vlinders leven verborgen en gaan in de duisternis honig en dauw lekken op bloemen,
bloeiende aren van graansoorten en andere grassen, zoo ook op boomen, struiken en
andere planten, waarop de Bladluizen hare zoete excrementen hebben achtergelaten. De
meeste komen ons niet onder de oogen, tenzij er een in onze woning verdwaalt, door het
licht aangelokt of met het doel om een veilige rustplaats voor den dag te zoeken. Hoewel
de rupsen verborgen leven, richten sommige toch eene niet onbelangrijke schade aan op
gekweekte planten.

De K w e e k g r a s u i l [Hadena (Luperina) basilinea, fig. 2] is lederbruin, soms met


een eenigszins grijze tint; de voorrand en het middelveld van de voorvleugels zijn echter
meer roestbruin. De ronde vlek en de niervlek zijn groot, de laatstgenoemde lichter,
vooral aan de zijde van den zoom. Van het midden van den vleugelwortel gaat een
zwarte straal uit; deze “lijn aan de basis” (basilinea) gaf aanleiding tot den soortnaam.
De beide geheele dwarsstrepen, die een donkerder rand hebben aan de naar elkander
toegekeerde zijden, de golflijn en de tapvlek zijn alle duidelijk zichtbaar. Kleine, zwarte
maanvlekjes tusschen de aders vormen de franjelijn, twee andere donkere vlekken een
band over het door een golvenden rand begrensde franjeveld. De glanzig geelbruine
achtervleugels zijn bij den zoom en op de aders donkerder.—Na de paring legt het wijfje
verscheidene eieren op de halmen en bladen van de grassen, waarmede de rups zich later
zal voeden; soms begunstigt zij op deze wijze gekweekte grassen, n.l. rogge en tarwe.
De rupsen, die soms in grooten getale voorkomen, heeft men, daar zij onderweg ter
aarde vielen uit het koren, dat naar de schuur gereden werd, op de muren van de langs
den weg staande huizen zien zitten, ook op de muren en den vloer van de schuur.
Wanneer men ze ongestoord liet begaan, zouden die, welke in de aren achterblijven,
voortgaan met het opvreten van de korrels, totdat de nadering van den winter haar in een
toestand van verstijving doet overgaan; in de lente hieruit ontwakend, zetten zij haar
bedrijf voort; sommige zoeken echter het gras in de vrije natuur op; in ’t begin van Mei
verpoppen zij zich.

Twee zeer fraaie Vlindertjes—de G r a s u i l e n (Neuronia popularis en Charaeas


graminis)—die door kleur en teekening aanmerkelijk verschillen, stemmen door het
voorkomen en de levenswijze hunner rupsen zoozeer overeen, dat het zeer moeielijk is
ze van elkander te onderscheiden, wanneer men ze niet beide te gelijk voor zich heeft.
Beide hebben niet zelden een aanzienlijke schade aangericht door het afvreten van
voedergrassen. Zij beginnen aan den voet, aan het jongste gedeelte van het blad, welks
spits weldra verwelkt en daarom onaangeroerd wordt gelaten. Uit de eieren, die in
Augustus of September op het onderste gedeelte van de grasplant worden gelegd, komen
voor den winter rupsjes, die, al naar de weersgesteldheid in den herfst, in meer of minder
ontwikkelden toestand verkeeren, wanneer de koude hen noodzaakt rust te nemen. In ’t
voorjaar zetten zij den arbeid met steeds toenemenden ijver voort; in Juni verpoppen zij
zich onder steenen of in den grond. Hun rolvormig, vetachtig glinsterend lichaam is dan
52 mM. lang, 7 à 8 mM. dik, van boven bronskleurig-bruin, met 3 lichtbruine,
aanvankelijk bijna witte, overlangsche strepen. De lichtbruingrijze buikzijde is scherp
gescheiden van de rugzijde door een geelachtige streep, waarin zich de zwarten
ademgaten bevinden. De kop is okergeel met 2 zwarte streepjes. Deze beschrijving geldt
voor beide rupsen: die van Charaeas echter is iets kleiner en meer grijsachtig. Beide
Vlinders gelijken op Spinners door hun langharig borststuk en de kamvormige sprieten
van het mannetje. De eerste heeft fraaie, roodbruine voorvleugels met
perzikbloesemrooden weerschijn; alle aders, de golflijn en de drie uilenvlekken zijn
geelachtig geschubd. Bij den laatstgenoemden Vlinder is de grondkleur van de
voorvleugels bestoven olijfgroenachtig, op het middelveld en de buitenste helft van het
zoomveld donkerder, op de 3 vlekken en de haar verbindende middelader helderder, min
of meer wit; de golflijn en de dwarslijnen zijn niet zichtbaar. Van de Charaeas-soorten
hebben Zweden en andere deelen van Noord-Europa, vooral echter Noord-Amerika,
soms veel te lijden; op onze weiden is haar aantal slechts bij uitzondering zoo groot als
gedurende het jaar 1865 in Drente. Ook in Duitschland richten zij slechts zelden zulke
verwoestingen aan als in 1817 te Harzburg, waar zij 1000 HA. weidegrond kaal vraten
en reeds in ’t vorige jaar zoo talrijk waren, dat de gedoode dieren een hand hoog de
wagensporen der landwegen vulden.

*
Merkwaardig door de levenswijze hunner rupsen zijn de R i e t u i l e n (Nonagria), effen
grijsgele, in kleur met droog riet overeenkomende Vlinders, die zich door een
vooruitstekende voorhoofdspluim, door den bollen, glad wollig behaarden rug van het
borststuk en het achterlijf onderscheiden. Zij vliegen van Augustus tot October,
uitsluitend in de nabijheid van hun geboorteplaats en hebben een uitgestrekt
verbreidingsgebied. Hunne rupsen leven borend in de stengels van riet en andere
eenzaadlobbige moerasplanten (welker bladen hierdoor aan de spits geel worden) en
hebben, daar zij aan den invloed van ’t licht onttrokken zijn, een bleeke kleur en een
madevormig uiterlijk. Zij verpoppen zich in haar nauwe woning, maar knagen vooraf
een gat, waardoor de Vlinder uitvliegen kan, wanneer hij slechts de opperhuid van den
stengel verbreekt of de prop knaagsel wegduwt, die de opening verstopt.

Een van de grootste en meest verbreide soorten is de G e w o n e L i s c h d o d d e n u i l


(Nonagria typhae), die 39 mM. vlucht heeft; de kleur zijner voorvleugels wisselt af van
roodachtig grijs tot donkerroodbruin; 2 reeksen van zwarte maanvlekjes versieren den
zoom en witachtige aders het franjeveld; de achtervleugels zijn geelachtig wit. In de
beide soorten van lischdodden (Typha latifolia en angustifolia) leeft de vuil
vleeschkleurige rups.

Zeer nauw verwant aan de Nonagriën zijn de B l e e k e U i l e n (Leucania). Een


daarvan, Leucania extranea, heeft zich door de verwoestingen, die zij als rups aanricht,
vooral in de westelijke staten van Noord-Amerika (1861), onder den naam van
A m e r i k a a n s c h e n L e g e r w o r m (A r m y - w o r m ) een zekeren roem
verworven. Deze rups voedt zich, evenals die van onze inheemsche soorten, met grassen
en heeft in zeer korten tijd geheele weiden kaal gevreten; zoodra het voedsel op is, trekt
zij verder en verschoont ook de rogge-, maïs- en sorgho-akkers niet. Volgens een bericht
uit het genoemde jaar legde zulk een rupsenleger binnen 5 uren een weg van 55 M. af.
Men zag de rupsen in drie boven elkander gelegen lagen voortrukken en zich soms over
een afstand van 800 M. verplaatsen om een nieuwe voederplaats te bereiken. Men brandt
daarom in het laatst van den herfst of in den winter de drooge grasstoppels af op de
plaatsen, waar zich de rupsen vertoond hebben, ten einde nieuwe verwoestingen te
voorkomen.

Niet minder schadelijk dan de Leucania-rupsen voor de grassen, zijn de G e s t r e e p t e


D e n n e n r u p s e n [Trachea (Panolis) piniperda, fig. 2] voor de dennen. De eerste
nauwkeurige berichten over de door haar aangerichte vernielingen zijn van de jaren 1783
en 1784, toen de Frankische en Saksische wouden vreeselijk geteisterd werden. De
rupsen zaten tot in de toppen der hoogste boomen en verslonden de jonge naalden aan de
spitsen van alle twijgen; de dennen, die na korten tijd er uit zagen als na een boschbrand,
stierven alle binnen eenige jaren. In Augustus hielden de rupsen op met eten, werden
slap en vielen in zoo groote hoeveelheid naar beneden, dat de grond er zwart van zag. De
gezonde rups heeft niets zwarts aan zich; over het groene lichaam loopen verscheidene
witte rugstrepen en een oranjekleurige zijdestreep. Ook in de vorige eeuw heeft de
Gestreepte Dennenrups zich herhaaldelijk in verschillende streken van Duitschland in
ontzaglijke menigte vertoond en duizenden HA. boschgrond vernield. Ook in ons land is
zij de gevaarlijkste vijand der dennenbosschen. De belangrijkste schade, door haar aan
onze houtteelt toegebracht, is die, welke in 1854 en 1855 in de provincie Gelderland
voorviel. In deze beide jaren werden aldaar niet minder dan 2270 HA. aangetast en
daarvan 985 HA. totaal vernield. Ook de provincie Utrecht bleef niet gespaard; aan de
Vuursche werden 50 à 60 HA. en bij Zeist 170 HA. aangetast en gedeeltelijk
kaalgevreten (Ritzema Bos). Zonder sterk de aandacht te trekken, komt de Gestreepte
Dennenrups van het laatst van Mei tot het midden van Juli waarschijnlijk in alle
dennenwouden voor; bij voorkeur houdt zij zich op in de 30- à 40-jarige boomen.
Dikwijls heeft men deze rupsen uitgedroogd aan de naalden zien hangen of ze in grooten
getale rottend over den bodem verspreid gevonden; in vele gevallen wordt hierbij
vermeld, dat hun dood plaats had na hevige regenbuien en koud weder. De lage
temperatuur en de vochtigheid brengen echter niet direct dit gevolg teweeg, wel indirect
door het begunstigen van de vermenigvuldiging der Insectendoodende zwammen
(schimmelplanten). Dat een zwam de oorzaak is van de epidemie, werd voor ’t eerst
aangetoond in West-Pruisen door Bail (1869). De Bary vond in 1883, dat deze zwam
Entomophthora Aulicae is. Hoe snel zij den dood van de rups kan teweegbrengen,
ondervond Nitsche, die een groot aantal oogenschijnlijk volkomen gezonde exemplaren
welke des Zondagsmiddags te Primkenau ingezameld waren, des Maandagsmiddags,
toen hij ze in Tharand uitpakte, voor een groot deel reeds dood en met de karakteristieke
vruchthyphen overdekt vond. Ook in Beieren heeft in 1892 deze rupsenvijand volgens
Von Tubeuf zeer gunstig gewerkt. Natuurlijk ontbreken in zulke gevallen ook de
z o n d e r m i c r o s c o o p z i c h t b a r e bondgenooten van den houtteler niet:
duizenden van Sluipwespen zwermen om de aangetaste boomen en veroorzaken den
dood van even zoovele rupsen. Zelden duurt een dennenrupsenplaag langer dan 2 jaar,
omdat bij het einde van dit tijdperk de parasieten zich doorgaans zoo sterk hebben
vermenigvuldigd, dat aan de ramp een einde komt. Zoo werd aan de bovengenoemde
dennenrupsenplaag in Gelderland, nadat deze 2 jaren had geduurd, een einde gemaakt
door een Parasietvlieg (Tachina glabrata). (Ritzema Bos).

Als tegen het einde van Maart de zon verscheidene dagen achtereen warm geschenen
heeft, ontwijkt de D e n n e n u i l , waarvan de G e s t r e e p t e D e n n e n r u p s de larve
is, reeds in deze maand, anders stellig in de volgende maand uit de in den grond
overwinterende pop. Zij is een van de bontste Uilen, zit met daksgewijs afhellende
vleugels op de stammen of tusschen de naalden der dennen en zwerft ook over dag door
haar gebied om bloeiende wilgenkatjes op te zoeken. De voorvleugels en het ruige, niet
van haarpluimen voorziene borststuk zijn roodachtig kaneelkleurig met bijmenging van
geelgrijs; aan de binnenrand is de golflijn roodbruin geschaduwd; de beide groote
vlekken zijn wit. Het achterlijf en de achtervleugels zijn effen donker grijsbruin. In Mei
legt het wijfje reeksen van 6 à 8 eieren op de naalden.

Dat er rupsen zijn, die andere rupsen opvreten, weet alleen de verzamelaar en kweeker
van zulk gedierte. Deze moordenaars heeft hij te vreezen; als er een zich bevindt in de
doos, waarin hij ook andere rupsen naar huis draagt, kan hij er zeker van zijn, dat een
deel van den met moeite verzamelden buit onderweg bedorven wordt. Zulk een
“moordenaar” is de rups van de IJ p e n - h y e n a - u i l [Cosmia (Calymnia) diffinis, fig.
1], die zich in Mei op ijpen vertoont. Zij heeft geen onaardig uiterlijk: met uitzondering
van den zwartbruinen kop en het glanzig bruine nekschild, is zij op geelachtig groenen
grond met 5 witte, overlangsche streepen geteekend, die gelijke tusschenruimten
overlaten, welke bezet zijn met bruin behaarde, door een wit vlekje omringde wratjes.
Een lichtgekleurde, gaffelvormige teekening op het voorhoofd en bruine ademgaten
behooren mede tot haar tooi. Niet minder sierlijk is de gladde, glanzig kastanjebruine,
vooral aan den binnenrand van den voorvleugel roodgrijs genuanceerde Vlinder; de
geelachtig grijze voorrand vertoont twee groote vlekken, beginsels van dwarslijnen,
waarvan de achterste sterk gebroken is.

Vele leden van het soortenrijke geslacht der A k k e r u i l e n (Agrotis) zien er vuil en
onooglijk uit, grijs als de bodem, waarop zij, onder bladen verborgen, bij voorkeur
verblijf houden; andere hebben het in haar familie zeldzame voorrecht van bont
gekleurde achtervleugels te bezitten: geel, met een zwarte streep bij den zoom. Het
lichaam is krachtig gebouwd; de kop en het borststuk zijn met aanliggende haren
bekleed; het ongekuifde achterlijf is dikwijls van boven naar beneden afgeplat. Zij
hebben de gewoonte zich over dag te verbergen en bij verstoring van hun rust de
horizontaal gerichte, elkander bedekkende vleugels trillend heen en weer te bewegen,
voordat zij opvliegen, om zich een eind verder nogmaals op den grond te verschuilen.
De onbehaarde, rolronde rupsen leiden een verborgen leven, eten uitsluitend gras of
kruiden, overwinteren en verpoppen zich in den grond.
1) IJ p e n - h y e n a - u i l (Cosmia diffinis) met rups—2) D e n n e n u i l (Trachea piniperda) met rups.
Ware grootte.

De H u i s m o e d e r [Agrotis (Tryphaena) pronuba] heeft 50 à 60 mM. vlucht en is,


behalve aan haar grootte, ook kenbaar aan den zwarten band op het zoomveld van de
overigens okergele achtervleugels; de voorvleugels zijn bij sommige (var. innuba) bijna
effen, roodachtig lederbruin; bij de overige scherper geteekend op rood-, grijs- of
zwartbruinen grond.

De A a r d r u p s e n (Agrotis segetum) zijn bijna ieder jaar voor landbouwers en


tuinlieden niet slechts lastig, maar zelfs zeer schadelijk. Zij hebben een vaalbruine, met
veel grijs en eenig groen gemengde kleur op de doorschijnende, sterk glinsterende huid;
het nekschild is donkerder dan het lichaam, het stuitschild niet. In volwassen toestand
zijn zij 52 mM. lang en zoo dik als een flinke ganzepen. Van Augustus tot October, bij
voortdurend gunstige weersgesteldheid nog in November, knagen zij aan de wortels en
andere onderaardsche plantendeelen van het jonge winterkoren (vooral van rogge en
tarwe), van allerlei soorten van kool en rapen, van aardappels en mangelwortels, van
verschillende groenten en sierplanten. Die welke, als engerlingen, in knollen en
knolvormige wortels leven, hierin gangen boren en groote holten doen ontstaan, blijven
geruimen tijd in dezelfde plant; de overige komen ’s nachts boven den grond om zich
van de eene plaats naar de andere te begeven en boven den grond de jonge plantjes af te
vreten. Over dag liggen zij ineengerold onder steenen en aardkluiten, of houden zich,
zoo deze ontbreken, verscholen in de bovenste aardlaag bij de wortels van hare
voederplanten. Eenige gaan reeds vóór den winter in den poptoestand over, hoewel zij,
behoudens enkele uitzonderingen, eerst in het volgende voorjaar de pophuid verlaten. De
meeste overwinteren echter als rups, verpoppen zich in de lente en komen na een rust
van ongeveer 4 weken als Vlinders te voorschijn. Dit brengt teweeg, dat men ze reeds in
de tweede helft van Mei ziet vliegen, veelvuldiger echter in Juni en ook nog wel in Juli
en Augustus. Hun vlucht bedraagt 44 mM.; de voorvleugels hebben een meer of minder
donkere, grijsbruine kleur, bij de meestal lichtere mannetjes met geelachtigen
weerschijn; voorts zijn zij met vlekken en strepen meer of minder duidelijk geteekend.
De achtervleugels hebben bij de mannetjes een melkwitte kleur, bij de wijfjes een
donkerder tint. Deze soort bewoont geheel Europa, maar is ook over een groot deel van
Azië en bovendien over Zuid-Afrika en Noord-Amerika verbreid; men kan haar dus
cosmopoliet noemen.

De M o n n i k e n of M o n n i k s k a p p e n (Cucullia) zijn tamelijk groote Uilen van 39


à 55 mM. vlucht, welker slank lichaam een deels glad, deels gekuifd (op de borst en de
pooten glad en wollig) haarkleed draagt. De voorvleugels zijn lang, lancetvormig, de
achtervleugels kort. Zij vliegen snel, uitsluitend ’s nachts en blijven op soortgelijke wijze
als de Sphingiden met trillende vleugels zweven voor de bloem, waaruit zij met haar
zeer langen zuiger honig opnemen. In rust bedekken de vleugels steil dakvormig het
achterlijf en worden de beide helften van den halskraag zoo gedraaid, dat zij als een kap
boven den kop uitsteken; hieraan is de naam van het geslacht ontleend. De naakte,
glanzige, met heldere vlekken geteekende rupsen eten bloemen en zaden van
kruidachtige planten en verbergen zich over dag niet. Wanneer men ze aanraakt, maken
zij krachtige, springende bewegingen. Zij verpoppen zich in den grond in een
eivormigen cocon, welker rand wel 5 mM. dik is en uit aaneengelijmde aardkluitjes
bestaat. De pop overwintert.

Tot dit geslacht behoort de W o l k r u i d v l i n d e r (Cucullia verbasci), wiens dikke,


rolronde rups is voorgesteld, zittend op haar gewone voederplant (de toorts of het
wolkruid), waarvan zij de bloemen verslindt; zij is zeer fraai blauw-, groen- of
geelachtig wit met 4 gele, zwart gekernde vlekken op ieder segment. Tegen het einde van
Juni verpopt zij zich. De Vlinder vliegt in April en Mei. De voorvleugels zijn bruingeel,
aan den voor- en binnenrand met een breeden, nootbruinen band, van achteren met 2
lichte maanvlekjes. De achtervleugels zijn aan den wortel witachtig, aan den zoom
bruingrijs; bij het mannetje heeft gene, bij het wijfje deze kleur de overhand.

*
Het R o o d e W e e s k i n d (Catocala nupta) met rups. Ware grootte.

De G o u d u i l e n (Plusia) zijn over alle werelddeelen verbreid en ook in Europa door


talrijke soorten vertegenwoordigd; zij onderscheiden zich voor ’t meerendeel gunstig
door metaalachtig glinsterende vlekken op de voorvleugels, soms gelijkend op de
Grieksche letters, b.v. γ, ν of λ, die uit een dikke laag goud of zilver schijnen te bestaan.
Boven het slanke achterlijf verheffen zich de huidbekleedselen kuifvormig. Deze fraaie
Uiltjes rusten met steil hellende, dakvormige vleugels; vele vliegen ook des daags. De
rupsen hebben een kleinen kop; ook haar romp wordt naar voren dunner. Daar de voorste
buikpooten ontbreken, kruipen zij op de wijze van spanrupsen en houden in rust niet
zelden het voorste deel van ’t bultige lichaam omhoog gekromd. Alle leven vrij op
kruiden, tusschen welker bladen zij zich in een luchtig spinsel verpoppen. In den regel
overwinteren zij als rupsen.

Zeer algemeen is hier te lande de G a m m a v l i n d e r , ook wel P i s t o o l u i l t j e


genoemd (Plusia gamma); hij is een van die soorten, welker voorvleugels gemerkt zijn
met een dikke zilveren letter in den vorm van de Grieksche γ (gamma); waarschijnlijk is
hij de veelvuldigste en verst verbreide van allen, daar men hem ook in Noord-Amerika
aantreft. Schuw en haastig ziet men hem bij ons boven akkers en in bosschen, over
weiden en in tuinen vliegen, bij zonneschijn niet minder dan in den vroegen morgen, of
op den laten avond, bedrijvig honig zuigend uit allerlei bloemen.—De rups is overlangs
wit gestreept op geel- à grijsgroenen grond, tusschen de segmenten ingesnoerd; zij vreet
allerlei kruiden en komt soms in zeer grooten getale voor. Dit was o.a. het geval in den
zomer van 1879 in allerlei streken van ons land en ook in andere landen. “De rupsen
hadden zich,” schrijft Ritzema Bos, “in buitengewoon groote menigte op langs den weg
groeiende onkruiden, als varkensgras (Polygonum aviculare), wilde wikken en lenzen,
lathyrus en rolklaver (Lotus), herik, melde, enz. enz. gevestigd, terwijl men in de
gemeentelijke verslagen over 1879 klachten vindt aangeheven over de rupsen van den
Gamma-uil uit bijkans alle streken des lands, maar ’t meest uit Gelderland,
Noordbrabant en Limburg. Vooral leden erwten, wikke, klaver, vlas en hennep.” Erger
nog was het in 1829 in vele streken van de provincie Groningen.

De grootste Uilen en tevens die, welke aan eigenaardigheden van hunne achtervleugels
kenbaar zijn en hun grootste bekoorlijkheid ontleenen, worden W e e s k i n d e r e n
(Catocala) genoemd; men onderscheidt ze in B l a u w e , R o o d e en G e l e . Van de
vier inheemsche soorten behoort één tot de eerstgenoemde afdeeling, terwijl de 3 overige
in de tweede een plaats verdienen. De derde is in Nederland niet vertegenwoordigd.

Het B l a u w e W e e s k i n d (Catocala fraxini) is de grootste inheemsche soort van


haar geslacht en van haar familie; zij heeft soms meer dan 105 mM. vlucht. Men herkent
dezen Vlinder licht aan den breeden, lichtblauwen dwarsband op het midden van de
zwarte achtervleugels. Hij vliegt ’s nachts, van Juli tot September, en rust over dag
dikwijls op zonnige plekken tegen stammen, schuttingen, muren, enz. Daar de vleugels
te groot zijn om op de gewone wijze het lichaam dakvormig te bedekken, hebben zij in
den rusttoestand geen sterke helling. De eieren overwinteren. De rupsen hebben 16
pooten, maar gebruiken de beide voorste buikpooten niet veel en kruipen dus eenigszins
spannend. Zij voeden zich ’s nachts met bladen van eiken, wilgen en populieren en
rusten over dag lang uitgestrekt op schuilplaatsen, waar zij wegens hun schorskleurige
huid niet licht opgemerkt worden.

De 3 overige inheemsche soorten hebben op de roode achtervleugels, behalve een


zwarten band in het zoomveld, nog een tweeden, meer of minder sterk getakten op het
midden. De meest algemeene is die, welke meer bepaaldelijk het R o o d e
W e e s k i n d (Catocala nupta) wordt genoemd. Dit fraaie dier, dat soms 80 mM. vlucht
heeft, kan men na half Juli, op boomstammen, in hoeken van muren, onder afdaken, enz.
zien rusten. Nadert men deze plaats, dan verwijdert het zich snel, zoodat men dikwijls de
vleugelslagen kan hooren, en zoekt haastig een veiliger schuilhoek op. Als het duister
wordt, begint het uit eigen beweging om de boomen te fladderen en herinnert dan aan
een kleine Vleermuis.—De rups, die tot het midden van Juni op wilgen en populieren
haar voedsel zoekt, is niet minder schuw dan de Vlinder. Wanneer men haar aanvat, slaat
zij met het voorste en het achterste deel van ’t lichaam in ’t rond, op soortgelijke wijze
als een Visch, die in ’t midden van ’t lichaam wordt gegrepen; als zij den vinger van haar
aanrander bereiken kan tracht zij hem te bijten, kortom, zij gaat hevig te keer.—Weldra
zoekt elke rups onder schors, mos of dorre bladen een plaatsje op, waar zij zich met
eenige draden ontwikkelt en in een slanke, met een blauwachtig waas bedekte pop
verandert.

Dezelfde levenswijze als de genoemde Vlinders hebben alle overige leden van hun
geslacht. In Europa vindt men er 25; Noord-Amerika is niet minder goed bedeeld.

Daar de familiën der Vlinders in alle richtingen door overgangsvormen verbonden zijn,
die een scherpe begrenzing niet toelaten, is het moeielijk een van deze groepen met
weinige woorden te kenschetsen. In een beknopt algemeen overzicht kan men dan ook
geen volledige bepaling van deze familiën verwachten. Hier worden daarom slechts
eenige van de belangrijkste eigenaardigheden opgenoemd, waardoor de S p a n n e r s
(Phalaenidae), die men ook wel met de namen L a n d m e t e r s (Geometridae),
M e t e r s of K r a m m e t j e s aangeduid vindt, overeenstemmen. Hoewel al deze 5
benamingen, met uitzondering van de tweede, aan de houding van de larve ontleend zijn,
beginnen wij met de bespreking van het geslachtsrijpe Insect. Vóór den kleinen kop, die
op de kruin g e e n bijoogen draagt, steken de tasters slechts weinig uit; de zuiger
daarentegen vertoont in deze familie de meest verschillende graden van volkomenheid.
In den voorvleugel vindt men 11 of 12 aders, waarbij slechts één binnenrandsader. De
breede achtervleugels hebben een korte franje, een vleugelhaakje, h o o g s t e n s 2
binnenrandsaders en bovendien nog 6 of 7 andere vleugeladers. De meeste Spanners
houden in rust hunne teere vleugels een weinig uitgespreid, doch niet zoover als die,
welke in de verzamelingen voorkomen; sommige richten ze half gesloten omhoog;
andere houden ze als een dak boven hun achterlijf. Vele vliegen over dag of maken
althans spoedig van hunne vleugels gebruik, wanneer zij hun rustplaats tusschen gras of
struiken niet meer veilig achten; des nachts toonen de meeste echter een grootere neiging
om zich te bewegen dan over dag.

Scherper dan door de eigenaardigheden van het volkomen ontwikkelde Insect


onderscheiden de Spanners zich van de overige Vlinders door de kenmerken der larven.
Dat bij haar de buikpooten, met uitzondering van het laatste paar, ontbreken of
onbruikbaar zijn en dat zij daarom “spannend” kruipen, werd reeds vroeger vermeld. Zij
bezitten dus slechts 10, bij uitzondering 12, voor ’t gaan geschikte pooten; in rust
hechten zij zich met de naschuivers aan een twijg en strekken het slanke lichaam rechtuit
of krommen het lusvormig, zoodat de rups, die in vele gevallen grootendeels bruin is,
zeer veel op een dor takje gelijkt. Enkele bevestigen zich, als de Dagvlinders, met een
gordel aan een blad, wanneer zij in den poptoestand overgaan; de meeste echter spinnen
zich met eenige draden vast, hetzij tusschen groene, of tusschen droge bladen; andere
kruipen in den grond.
Men kent tegenwoordig uit alle
werelddeelen ongeveer 1800 soorten
van Spanners, waarvan slechts
weinige de middelmatige grootte
overschrijden. Linnaeus beschreef
de hem bekende soorten onder den
geslachtsnaam Phalaena, bracht ze
tot de groep der “Geometrae” en gaf
aan hare soortnamen den uitgang
aria of ata, al naar hij bij de
mannetjes kamvormige of eenvoudig
draadvormige sprieten vond. Latere
schrijvers hebben hier, evenals
overal, een groot aantal nieuwe
geslachtsnamen ingevoerd.

De B e r k e n s p a n n e r
(Amphidasis betularia) nadert in
sommige opzichten tot de Spinners
en behoort wegens de langwerpige
gedaante zijner voorvleugels tot de
grootste inheemsche soorten (50 à
55 mM. vlucht). Twee kegelvormige
verhevenheden op den kop van de
rups hebben aanleiding gegeven tot
den naam M e t e r - t o r e n k o p ,
die een der eerste beschrijvers dezer
soort haar gegeven heeft. De witte
grondkleur van den Vlinder is overal
B e r k e n s p a n n e r (Amphidasis betularia): Wijfje, rupsen bruinzwart besprenkeld. Vele
en pop. Ware grootte. stipvormige vlekjes vloeien hier en
daar, doch vooral aan den voorrand
der voorvleugels tot vlekken en lijnen ineen. Het aanmerkelijk kleinere mannetje
onderscheidt zich van het wijfje door den slankeren vorm van het lichaam en de dubbel-
kamvormige sprieten. De rups is verschillend van kleur, meestal groenachtig grijs,
minder dikwijls bruinachtig of geelachtig; dit verschil schijnt in verband te staan met de
soort van planten, waarmede zij zich voedt. Hoewel zij ook op berken, lijsterbessen en
andere breedgebladerde boomen voorkomt, geeft zij, naar ’t schijnt, aan den eik de
voorkeur. In Mei of Juni verschijnt de Vlinder; deze ziet men nooit over dag vliegen;
wegens zijn grootte en lichte kleur zal men hem niet licht over ’t hoofd zien, terwijl hij
met half geopende vleugels in het bosch op een boomstam zit.
De G r o o t e W i n t e r v l i n d e r (Hibernia defoliaria, fign. 1–3) vertoont zich in
October en November. Wanneer de meeste andere insecten reeds hunne winterkwartieren
hebben opgezocht en voor een deel reeds in verstijfden toestand verkeeren, vliegt deze
trage Spanner in de koude nachtlucht zonder overhaasting rond. Het mannetje (fig. 1)
heeft groote, teere en zwak geschubde vleugels van licht okergele kleur met fijne,
donkere stipjes bezaaid en met een groote, donkere stip in ’t midden; de voorvleugels
hebben bovendien nog het middelveld begrensd door breede, gezaagde, roestbruine
dwarsbanden. Het ongevleugelde, geel en zwart gevlekte, 10 mM. lange wijfje (fig. 2)
kruipt tegen den avond bij de boomstammen omhoog en legt de eieren afzonderlijk of tot
kleine groepjes vereenigd op de knoppen. De rupsjes komen reeds in het midden van
April voor den dag en beginnen onmiddellijk hun vernielingswerk, voordat de knoppen
zich hebben kunnen ontwikkelen. Het best merkt men ze aan de vruchtboomen op,
welker eigenaar soms een belangrijke schade lijdt door hun vraatzucht; minder duidelijk
openbaart zich hun werkzaamheid in de bosschen. De volwassen rups (fig. 3) is aan de
rugzijde bruinrood, aan de buikzijde zwavelgeel, met roodbruine strepen op ieder
segment. In ’t begin van Juni laat zij zich aan een draad naar den grond afzakken om hier
op zeer geringe diepte in den poptoestand over te gaan.

G r o o t e W i n t e r v l i n d e r (Hibernia defoliaria):—1) Mannetje. 2) Wijfje. 3) Rups. O r a n j e r o o d e


W i n t e r v l i n d e r (Hibernia aurantiaria): 4) Mannetje. 5) Wijfje. K l e i n e W i n t e r v l i n d e r
(Cheimatobia brumata):—6) Mannetje. 7) Wijfje. 8) Rups.—Ware grootte.
De O r a n j e r o o d e W i n t e r v l i n d e r (Hibernia aurantiaria, fign. 4 en 5) is hier te
lande zeldzamer dan de vorige soort; hij vliegt terzelfder tijd of iets later en heeft
dezelfde levenswijze.

Het laatste geldt ook van den K l e i n e n of G e w o n e n W i n t e r v l i n d e r


(Cheimatobia brumata, fign. 6–8). Dat deze nog later verschijnt, wordt door zijn
wetenschappelijken soortnaam aangegeven (bruma beteekent de kortste dag);
daarentegen kruipt zijn rups iets vroeger in den grond, waaruit voortvloeit, dat de
poptoestand gemiddeld een maand langer duurt. Evenals de Groote Wintervlinder in
zuidelijker landen de vruchtboomen beschadigt en overal waar hij in grooten getale
voorkomt, aanleiding geeft tot een schralen oogst, zoo de Kleine Wintervlinder in
noordelijker gewesten. De teere, afgeronde vleugels van het mannetje zijn zwart
geschubd en grijsachtig, de voorvleugels door een roodachtig waas donkerder en op
onregelmatige en varieerende wijze met nog donkerder dwarslijnen geteekend. Het
grijze, 5 à 6 mM. lange wijfje, kenmerkt zich door vleugelstompjes, die ieder een
donkeren dwarsband hebben en door witgevlekte, lange pooten. De rups is vroeg in ’t
voorjaar bij ’t verlaten van het ei grijs, na de laatste vervelling is zij 26 mM. lang en
geelachtig groen of donkerder van kleur; de kop is donkerbruin, een aan weerszijden
witgezoomde, fijne streep over den rug nog donkerder; een lichte streep loopt boven de
ademgaten langs. Niet later dan in ’t begin van Juli verlaat de rups haar boom om op
geringe diepte in den grond te veranderen in een geelbruine pop, welker achterlijf in
twee doorntjes eindigt.

Om de vruchtboomen tegen de zoo schadelijke rupsen van de Wintervlinders te


beveiligen, brengt men sinds lang met goed gevolg een teerring aan op den stam. Deze
bestaat uit een strook papier ter breedte van een hand, die op zulk een hoogte, als voor de
werklieden het gemakkelijkst is, zoo om den stam wordt gelegd, dat geen enkel wijfje er
onder door naar boven kan kruipen. Deze band wordt met een kleverige stof bestreken
en kleverig gehouden, zoolang de geslachtsrijpe Insecten leven.

De G e w o n e D e n n e n s p a n n e r (Bupalus piniarius, fign. 1–3) vertoont zich in een


gunstiger jaargetijde dan zijne laatstgenoemde verwanten. Met schommelende, maar
toch haastige en woeste vlucht bewegen de mannetjes en wijfjes zich op warme
Junidagen tusschen de stammen en de twijgen der dennen en sparren. Het mannetje is op
zeer verschillende wijzen met lichte vlekken en stralen op zwartbruinen grond
geteekend; deze hebben op de bovenzijde een stroogele, van onderen een zuiverder witte
kleur. Bij het nog sterker varieerende wijfje wisselt op soortgelijke wijze somber
roodgeel met roodbruin af. De eieren worden boven in de kroon op overlangsche reeksen
aan de onderzijde der dennenaalden vastgekleefd; in Juli kruipen de rupsjes er uit; eerst
in Augustus valt de door hen aangerichte schade in ’t oog, wanneer zij in grooten getale
aanwezig zijn. In October laten zij zich aan draden op den grond zakken om zich onder
mos of dorre bladen te verpoppen. De zeer slanke, groene rups heeft drie witte rug- en
twee gele zijlijnen. De pop overwintert.

De S p i e s b a n d s p a n n e r (Larentia hastata, fign. 4 en 5) heeft zwart en wit


geteekende vleugels: de witte band heeft op elken vleugel een zoomwaarts gerichte,
spiesvormige spits. Hij bewoont, evenals de vorige, uitsluitend bosschen, doch alleen
die, waarin het berkenkreupelhout de overhand heeft. Hier vliegt hij in Mei tamelijk vlug
en schuw rond. De rups is kaneelbruin met een rij van gele, hoefijzervormige vlekken op
iedere zijde.

De Schubvleugeligen, die men onder den naam van K l e i n e V l i n d e r s


(Microlepidoptera) samenvat, vormen geen natuurlijke groep; zij worden over
verscheidene familiën verdeeld, die met elkander niet nader verwant zijn dan met de
overige Heteroceren. Voor de nog steeds gebruikelijke splitsing der orde bestaan redenen
van praktischen aard. De studie der Microlepidoptera is wegens hun kleinheid en
teerheid met grootere bezwaren verbonden, dan zich bij de andere Vlinders voordoen; zij
kan in den regel niet op voldoende wijze met het ongewapend oog geschieden; voorts
vereischt het voor haar benoodigde materiaal andere methoden van vangst, kweeking en
behandeling. Hoewel deze moeielijkheden velen hebben afgeschrikt, is het aantal
bekende soorten van Kleine Vlinders thans reeds aanmerkelijk grooter dan dat der
Groote. In Nederland heeft men, volgens J. Th. Oudemans, van gene 949, van deze 764
soorten gevangen. Voor geheel Europa schijnt een dergelijke verhouding te gelden. Ruim
20 jaren geleden waren 2583 soorten van Groote Vlinders en omstreeks 2700 soorten
van Kleine uit ons werelddeel bekend.

De B l a d r o l l e r s (Tortricina) verschillen door de houding van ’t lichaam en het


maaksel der vleugels aanmerkelijk van de overige Microlepidoptera; men zou ze op ’t
eerste gezicht voor een klein slag van Uilen kunnen houden. De langwerpige, dikwijls
metaalachtig glinsterende en bont geteekende vleugels hebben een korte franje en een
boogvormig vooruitstekenden voorrand. De ongeteekende, breede achtervleugels hebben
den vorm van het vierde deel van een ellips of van een trapezium, missen de
ingeschoven cel, bezitten een vleugelhaakje, 3 vrije binnenrandsaders en nog 6 of 7
andere aders. De borstelvormige sprieten ontspringen uit een dik grondlid en bereiken de
spits van den vleugel niet; bijoogen zijn aanwezig. Vrijwillig vliegen de Bladrollers niet
anders dan ’s avonds of ’s nachts; zij laten zich echter opjagen uit de struiken of het gras,
die aan vele soorten over dag een schuilplaats verschaffen, waar hun kleur hen beveiligt;
in rust bedekken de vleugels dakvormig het achterlijf.
De rupsen van de Bladrollers hebben 16 pooten, Zij leven niet vrij en gezellig aan de
oppervlakte van de plant, gelijk de meeste andere rupsen, maar eenzaam in een donkere
woning. Deze wordt dikwijls verkregen door het oprollen van bladen, die met eenige
draden bijeengetrokken en in dezen stand gehouden worden. Hieraan dankt de familie
haar naam, hoewel dezelfde levenswijze ook wel bij rupsen van andere familiën wordt
waargenomen. Daarentegen bewonen de rupsen van een groot aantal Bladrollers gangen,
die zij in verschillende plantendeelen, vooral in vruchten, boren. Deze woning verwisselt
de volwassen larve in den regel voor een andere, waarin zij als pop verblijf zal houden.
De rupsen, die in opgerolde bladen leven, verpoppen zich hier ook. De pop wordt nooit
door een echten cocon beschut en heeft dikwijls een krans van doorntjes aan den
achterrand der achterlijfsringen, die beweging toelaten.

De rupsen van sommige Bladrollers richten in kweekplaatsen van planten, vooral in


tuinen, bosschen en wijngaarden, schade aan. De dikke, zwartbruine of grijze rupsen van
R o z e n b l a d r o l l e r s [Grapholitha (Paedisca) tripunctana, roborana, enz.], die te
voorschijn komen bij het openen van de saamgesponnen bladen van tuinrozen, vreten het
uiteinde van de jonge twijg, die haar herbergt, geheel kaal; geen bloem zal hier
ontluiken, tenzij de vraatzuchtige larve ten spoedigste wordt weggenomen en gedood.
Andere rupsen van Bladrollers [Tortrix (Cacoecia) xylosteana, sorbiana, enz.] doen door
een soortgelijke levenswijze schade aan vruchtboomen.

G e w o n e D e n n e n s p a n n e r (Bupalus piniarius):—1) Mannetje. 2) Wijfje. 3) Rups.


S p i e s b a n d s p a n n e r (Larentia hastata):—4) Wijfje. 5) Rups.—Ware grootte.

Een vleeschkleurige rups, welker kop, halsschild en borstpooten glanzig zwart zijn en
die in volwassen toestand 12 mM. lang is, bewoont van half Mei tot half Juni (dus in den
hooitijd) de bloeiwijze van den wijnstok en is daarom onder den naam van
h o o i w o r m berucht. Een tweede generatie van dezelfde soort van rupsen trekt nog
meer de aandacht; zij leeft van ’t einde van Augustus tot in September in de onrijpe
druiven, die hierdoor zuur blijven en wordt daarom door de Duitsche wijnboeren
z u u r w o r m genoemd. Zij verpopt zich in October en overwintert onder de schubben
van de schors van den wijnstok, aan den paal, die hem tot steun dient, of in den
strooband, waarmede hij is vastgebonden. Uit de pop ontwikkelt zich in April een
Vlinder van 14 mM. vlucht—de E é n m a a l G e s t r e e p t e
D r u i v e n b l a d r o l l e r (Conchylis ambiguella)—, wiens glanzig stroogele
voorvleugels in ’t midden een breede, donkerbruine dwarsstreep vertoonen, die bij den
binnenrand smaller wordt; de achtervleugels zijn grijsbruin, bij het mannetje meer
witachtig. In Juni en Juli vliegt de zomergeneratie.

De G r o e n e E i k e n b l a d r o l l e r
(Tortrix viridana) is gemakkelijk te
herkennen aan de lichtgroene kleur van het
voorste deel van ’t lichaam en van de
voorvleugels; het achterlijf en de
achtervleugels zijn zilvergrijs. Reeds in
Mei, als de knoppen van den winter- en den
zomereik zich beginnen te ontwikkelen, kan
men tusschen de knopschubben rupsjes
vinden, voortgekomen uit eieren, die hier
G r o e n e E i k e n b l a d r o l l e r (Tortrix sedert den vorigen herfst gelegen hebben.
viridana) met rups en pop. Ware grootte. Zij dringen in de knoppen door, vreten deze
uit en leven later vrij op de bladen, die zij
met eenige draden omspinnen en ook een
weinig doen omkrullen. Vooral tegen den tijd, waarin zij tusschen de overblijfselen van
bladen in den poptoestand overgaan, hangen een menigte van deze draden als spinrag
aan de boomen. Bij de geelachtig groene, 14 mM. lange rups zijn de kop, de achterrand
van het halsschild, een vlek op het laatste segment en de bruinachtig behaarde wratjes
zwart. De Vlinder, die omstreeks den langsten dag verschijnt, is 8 mM. lang en heeft 23
mM. vlucht.

De H a r s b u i l e n b l a d r o l l e r (Retinia resinella) en zijne verwanten maken een


aangenamen indruk door de talrijke, meestal zilverachtig glinsterende, gegolfde
dwarslijnen op de donker gekleurde voorvleugels; hunne rupsen zijn op verschillende
wijzen nadeelig voor de knoppen en de jonge twijgen van de naaldboomen. De
genoemde soort heeft zeer donkerbruine voorvleugels en vliegt reeds in Mei ’s avonds
bij mooi weer tusschen de dennenaalden rond. De naweeën van zijn verschijning
vertoonen zich in den herfst: onder den krans van knoppen, die in de volgende lente
zullen uitkomen, ziet men harstranen. Bij nader onderzoek vindt men hierin een gang,
die zich tot aan het merg uitstrekt en bewoond wordt door een rupsje, wiens arbeid de
harsuitvloeiing heeft veroorzaakt; deze neemt in den loop van het volgende jaar sterk
toe; eindelijk heeft zij den omvang van een grooten noot bereikt en valt dan door haar
vuilwitte kleur aan den voet van den intusschen uitgesproten krans van twijgen duidelijk
in ’t oog. De zoogenaamde “harsgal” bevat bijna 2 jaar na den tijd waarin het wijfje
eieren legde, een geelachtig roodbruine, 11 mM. lange rups met dikken, zwarten kop, die
in de lente in een pop verandert.

De D e n n e l o o t b l a d r o l l e r (Retinia Buoliana) heeft witte, als zilver glinsterende


teekeningen op de roodachtig oranjekleurige voorvleugels, die van onderen, evenals de
achtervleugels aan beide zijden, effen roodachtig grijs zijn. Het wijfje vliegt des avonds
in Juli en legt eieren tusschen de knoppen aan en bij den top der jonge Dennen. Eerst in
Mei van ’t volgende jaar oefenen de rupsen een merkbaar schadelijken invloed op de dan
ontstaande loten uit. Deze krommen zich op de plaats, waar de rupsen aan de schors en
het nog jonge hout knagen en zullen, als zij in ’t leven blijven, haar kromming
behouden, terwijl het onbeschadigde deel daarboven op de gewone wijze verder groeit.
Dit geschiedt ook met de loot, die zich ontwikkelt tot een verlengstuk van den stam,
welke hierdoor den zoogenaamden “waldhoorn”-vorm verkrijgt.

De “wormpjes” van de “wormstekige”


appels en peren zijn larven van den
A p p e l b l a d r o l l e r [Grapholitha
(Carpocapsa) pomonella, fign. 1 en 2]; zij
hebben 16 pooten en zijn bleek rozerood
of roodachtig geel, aan den buik lichter.
Tot het knagen van gangen in appels en
peren worden zij minder door het
vruchtvleesch dan door de pitten in het
klokhuis verlokt. De eieren worden op het
halfrijpe ooft gelegd; de plaats waar het
rupsje naar binnen drong, is kenbaar aan
een zwart plekje op de “wormstekige”
1, 2) A p p e l b l a d r o l l e r (Grapholitha
vruchten. Deze worden iets eerder rijp dan
pomonella): 1) Rups. 2) Vlinder. 3) M e e l m o t
hare gave buren en vallen voor een deel
(Asopia farinalis). Ware grootte.
onrijp af. De rupsen van de vroegrijpe
vruchten gaan meestal te niet, omdat zij
bij het opeten van het ooft gevonden en weggeworpen worden, voordat zij geheel
volwassen zijn. Die, welke zich in de winterproviand bevinden, verlaten haar woonplaats
door de reeds aanwezige gang of banen zich een anderen uitweg, kruipen in den een of
anderen hoek, overwinteren hier in een door haar gesponnen kleed en verpoppen zich
eerst in Mei. In Juni komt de Vlinder te voorschijn; hij heeft 20 mM. vlucht; men krijgt
hem vooral te zien tegen de muren en vensters van bergplaatsen van winterappels en -
peren. In de vrije natuur rust hij over dag tusschen schorsschilfers, waarmede zijn kleur
zoozeer overeenkomt, dat men hem niet licht ontdekt. De blauwachtig grijze
voorvleugels vertoonen fijne, gekronkelde, bruine dwarslijnen. Een roodachtig
donkerbruine spiegelvlek, die een roodachtig goudkleurigen rand heeft en aan de zijde
van den wortel zwart begrensd is, beslaat een groote plaats aan den binnenhoek. De
roodachtig bruine achtervleugels hebben een zwakken koperglans en zijn omzoomd door
grijze franje.

Veel minder vaak krijgt men de somber grijsbruine, kleinere P r u i m e n b l a d r o l l e r


(Grapholita funebrana) onder de oogen; ofschoon de meeste pruimen in sommige jaren
woning en voedsel verschaffen aan een van zijne rupsen, die dikwijls de helft van het
vruchtvleesch in walgelijke drekkruimeltjes verandert.

De familie der L i c h t m o t t e n (Pyralidina) omvat de grootste en tevens kleinere


Microlepidopteren, die, naar het uitwendige, aanmerkelijk minder overeenstemmen dan
de leden der vorige familie. De gemeenschappelijke kenmerken berusten hoofdzakelijk
op den vorm van het vleugeladerstelsel. De sprieten zijn borstelvormig; de onbehaarde
oogen puilen meestal half bolvormig uit; de bijoogen ontbreken slechts zelden en zijn
meestal onmiddellijk achter den wortel van de sprieten gelegen. De tasters zijn zeer
veranderlijk van grootte, vorm en richting; behalve de liptasters komen ook
zoogenaamde bijpalpen voor. De rupsen van de Lichtmotten komen in vorm en
levenswijze met die der Bladrollers overeen. Verreweg de meeste soorten overwinteren
als rups, slechts weinige als pop, geen enkele, naar het schijnt, als ei of als Vlinder.

De Ve t m o t (Aglossa pinguinalis) is een Vlindertje van 22 à 30.5 mM. vlucht met


roodgrijze, als zijde glinsterende vleugels; de vlekken van de voorvleugels zijn voor een
deel zwartachtig en als dwarsbanden, voor een deel witachtig en als dambordvelden
gerangschikt; de effen gekleurde achtervleugels onderscheiden zich door lange franje.
De zuiger ontbreekt. In Maart of April, ongeveer 4 weken vóór de geboorte van den
Vlinder, verschijnt de glanzig bruine rups—die tot aan dien tijd verborgen was in vet,
boter, spek en dergelijke waren—soms op de muren van de provisiekamer bij het zoeken
van de plaats, waar zij als pop zal rusten.

De M e e l m o t (Asopia farinalis, fig. 3) bewoont, evenals de vorige soort,


provisiekamers en andere bergplaatsen van eetwaren; haar rups voedt zich met meel.

Het soortenrijke geslacht der G l a n s m o t t e n (Botys) omvat meer dan 100


Europeesche soorten. Sommige zijn donkerkleurig, vliegen uitsluitend bij zonneschijn
en zetten zich neer op den grond of op bloeiende planten, waaruit zij honig peuren.
Andere, vooral lichtkleurige soorten, worden gevonden in de omgeving van plassen en
zweven, zoodra de duisternis invalt, spookachtig boven den waterspiegel, daar de hier
groeiende planten aan hare rupsen voedsel verschaffen. De meeste zijn grootendeels geel
van kleur, vliegen ’s nachts en rusten over dag in de struiken. Dit geldt ook van sommige
verwante geslachten. De rupsen van eenige Glansmotten richten op akkers schade aan.

De K o o l z a a d - f l u i t j e s m a k e r (Botys margaritalis) heeft vuil zwavelgele


voorvleugels met 2 roestgele (hier en daar onduidelijke of zelfs afgebrokene)
dwarsbanden en een roestbruine, bij de spits aanvangende, schuinsche streep; de franje is
roestbruin, met veel grijs gemengd. De glanzig stroogele, korte en breede achtervleugels
hebben een fijne, roestbruine franjelijn en aan den binnenhoek een grijsbruine vlek op de
zwak getinte franje. In Juni en Juli vliegen deze vlindertjes des avonds over de akkers;
het wijfje legt dan eieren op de hauwen van koolzaad, raapzaad, boerenkers (Thlaspi),
scheefbloem (Iberis), raket (Sisymbrium) en andere kruisbloemige planten. De gaten, die
de rups knaagt in de door draden saamgesponnen vruchten, met welker zaden zij zich
voedt, hebben aanleiding gegeven tot den naam van de soort, omdat de door haar
aangetaste hauw met een fluit vergeleken wordt. De rups is geelgroen, met uitzondering
van vier rijen zwartbruine, borsteldragende wratten op den rug en van één rij donkere
stipjes boven de eveneens donkere ademgaten. De kop en het halsschild (waarop 3 witte,
overlangsche strepen voorkomen) zijn zwart. De volwassen rups kruipt in den grond en
overwintert hier in een eivormige, van binnen met zijde bekleede holte. In Mei, 26 dagen
voor het verschijnen van den Vlinder, heeft de overgang in den poptoestand plaats.

De rupsen van de W a s m o t (Galleria mellonella, fign. 3–6) leven in bijenkorven en


voeden zich met was. Het wijfje (35 mM. vlucht) heeft aschgrauwe voorvleugels met
bruinachtig gelen binnenrand en roodbruine vlekken; de achtervleugels zijn grijs. Zij
dringt ’s avonds door het vlieggat (liever nog door andere openingen) in den korf door en
legt op de raten eieren. De hieruit komende rupsen graven gangen, die in verschillende
richtingen de wanden der cellen doorboren; bij voorkeur vernielen zij op deze wijze
oude broedcellen, hoewel ook de met honig gevulde niet gespaard blijven. De gang, die
soms een lengte van 15 cM. bereikt en welks wijdte allengs tot die van een penneschacht
toeneemt, is van binnen bekleed met een glad, zijdeachtig spinsel, waaraan van buiten
afgeknaagde wasstukjes en sterk washoudende uitwerpselen vastgehecht zijn. De
Wasmot-rupsen kunnen, wanneer zij in grooten getale voorkomen, door het omspinnen
der raten en het laten wegvloeien van den honig, den Bijen zooveel last veroorzaken, dat
deze genoodzaakt zijn den korf te verlaten. Elk jaar komen verscheidene generaties voor,
die ieder een ontwikkelingsduur van ongeveer 3 weken vereischen, behalve de laatste,
die in den poptoestand overwintert en in Mei haar laatste gedaantewisseling ondergaat.
Deze veranderingen schijnen echter niet aan bepaalde tijden gebonden te zijn, daar men
in de aangetaste korven van Juni tot October zoowel rupsen als poppen en Vlinders
aantreft. De pop is bruingeel en op den roodachtig grijzen rug gekield; zij bewoont een
dicht, wit, langwerpig spinsel; gewoonlijk liggen verscheidene van deze cocons in
overlangsche richting naast elkander. Na een rusttijd van 18 dagen heeft de pop zich tot
een Vlinder ontwikkeld. Deze kan zeer vlug loopen en is zeer lichtschuw; onmiddellijk
zoekt hij een duisteren hoek op, zoodra men hem aan ’t licht blootstelt.

Verreweg de grootste helft van alle Microlepidoptera heeft men samengevoegd in de


familie der M o t t e n (Tineina); een algemeene beschrijving van deze groep is wegens
de groote verscheidenheid van vorm en levenswijze harer leden zeer moeielijk. Bij de
meest typische Motten krijgen de smalle, spits toeloopende, lijn- of lancetvormige
vleugels eerst door hun buitengewoon lange franje den vorm, die aan de vlindervleugels
over ’t algemeen eigen is. In rust liggen zij op het lichaam en bedekken het bij wijze van
een dak; bij eenige soorten omhullen zij het echter als een mantel. De achtervleugels zijn
in den regel effen, meestal grijs, dus niet sprekend van kleur; de voorvleugels
daarentegen prijken dikwijls met zulke schitterend bonte kleuren en prachtige,
metaalachtig glinsterende teekeningen, dat men de Motten tot de fraaiste van alle
Vlinders kan rekenen. Ongelukkig openbaart de schoonheid dezer Insecten zich, wegens
hun kleinheid, slechts onder het vergrootglas in haar vollen omvang. De meeste dragen
borstelvormige sprieten van middelmatige lengte; bij sommige soorten evenwel zijn de
sprieten zeer lang, vooral bij de mannetjes; het kan voorkomen, dat hun lengte eenige
malen die van het lichaam overtreft.

1) K o r e n m o t (Tinea granella) in geslachtsrijpen toestand en als rups.—2) Rups van de P e l s m o t


(Tinea pellionella).—3–6) W a s m o t (Galleria mellonella): 3) Beschadigde raat. 4) Rups. 5) Pop. 6)
Wijfje.

Niet minder verschillend dan het uitwendig maaksel der Vlinders is de levenswijze der
14- à 16-pootige rupsen. Sommige leven gezellig in een groot spinsel, dat geheele takken
en kleine struiken als ’t ware met een sluier omgeeft; andere rollen bladen of een blad
samen en bewegen zich in de dus gevormde, aan beide einden geopende buis even snel
vooruit als achteruit. De zelfgemaakte kokertjes, die de leden van andere soorten
bewonen en voortdurend medesleepen, bestaan uit stukjes, die zij van haar voedsel
hebben afgeknaagd. Zeer vele rupsen leven als “mijngravers” in gangen, die zij in het
bladmoes, tusschen de bovenste en de onderste opperhuid van het blad, maken; andere
boren eenvoudig gangen in allerlei plantendeelen.

Bij het geslacht Tinea komen zeer ontwikkelde, ver vooruitstekende, 6- à 7-ledige
bijtasters voor; het tweede lid van den liptaster is aan het einde met borstels bezet, de
zuiger voor het gebruik ongeschikt, de kop van een haarkuif voorzien. De
borstelvormige sprieten zijn korter dan de voorvleugel.

De K o r e n m o t (Tinea granella, fig. 1) heeft 13 mM. vlucht en richt als rups schade
aan in graanpakhuizen. Hier ziet men het Vlindertje in Juni des daags tegen muren,
balken, enz. zitten. De vleugels bedekken in rust daksgewijs het lichaam; de
voorvleugels, die van achteren door de franje verbreed zijn, hebben een zilverwitte kleur
en donkerbruine à zwarte marmervlekken. De franje en de randen zijn donker gevlekt;
tamelijk standvastig strekt de grootste vlek zich van het midden van den voorrand
streepsgewijs tot aan den binnenhoek uit. De achtervleugels zijn, evenals het achterlijf,
glanzig witachtig grijs. Het wijfje legt bij voorkeur in graanpakhuizen eieren: 1 of 2 op
elke korrel. Na 10 à 14 dagen worden de rupsjes geboren. In de laatste week van Juli
openbaart hun aanwezigheid zich reeds door de kleine hoopjes drek, die aan de
aangetaste graankorrels hangen; deze zijn bij 3, 4 of meer stuks aaneengesponnen. De
“witte korenwormen” bepalen zich niet tot één korrel, maar snoepen van verscheidene en
verbinden deze door een weefsel; hieronder verborgen beknagen zij het graan van
buiten. De geelachtig witte rups verpopt zich in de uitgeholde graankorrel, in een naad
van den vloer, of in een spleet van een balk. De woning, die zij van het knaagsel uit haar
omgeving en van haar spinsel vervaardigt, bevat tot in de lente een rups, die dan eerst
verandert in een bruinachtige pop.

Algemeen bekend zijn de verwoestingen, welke de rupsen der K l e e d e r e n - of


P e l s m o t t e n (fig. 2) aanrichten op plaatsen waar men ze niet stoort, b.v. in
kleerkasten, in gevulde zittingen van stoelen en canapees, in laden met wollen goederen
en ook in natuurhistorische verzamelingen. Overal waar zij zeer talrijk zijn, ziet men ze
’s winters aan den buitenkant der door haar aangetaste voorwerpen hangen in kleine
zakjes, waarvoor het materiaal geleverd wordt door de stoffen uit de omgeving; later
verpoppen zij zich hierin. De leden van 2 soorten verrichten gemeenschappelijk dezen
arbeid. De eene is de 11 à 17.5 mM. spannende P e l s m o t (Tinea pellionella), welker
als zijde glinsterende, geelachtige voorvleugels in het midden met een of twee donkere
stippen geteekend zijn en welker grijze achtervleugels een geelachtigen weerschijn
hebben. De andere, de T a p ij t m o t (Tinea tapeziella), heeft 15 à 22 mM. vlucht: hare
voorvleugels zijn voor de kleinste, aan den wortel grenzende helft violetbruin, overigens
geelachtig wit, behoudens een violetachtig grijze vlek aan de spits; de achtervleugels zijn
als bij de vorige soort. Beide vliegen in Juni en Juli; zij kunnen zich echter ook vroeger
of later vertoonen, al naar de temperatuur der woonplaats.

De A p p e l b o o m - s p i n s e l m o t of A p p e l b o o m - s t i p p e l m o t (Hyponomeuta
matinella) heeft 19 mM. vlucht en is grootendeels wit met zijdeachtigen glans. Op de
langwerpige voorvleugels bevinden zich 3 overlangsche rijen van zwarte stipjes (zwart
gestippeld zijn ook de rug en de schouderdeksels); de donkergrijze, aan den wortel
witachtige achtervleugels hebben een effen lichtgrijze franje. Van het einde van Juni tot
in het begin van Augustus kan men dezen weinig in ’t oog vallenden Vlinder over dag op
appelboomen zien loopen of zitten en ’s avonds in hun nabijheid rondvliegen, voor zoo
ver zich op deze boomen tusschen de takken floersachtige spinsels bevinden en reeds
vroeger aanwezig waren. Hier is n.l. de woonplaats van zijn bruinachtig grijze, met
zwarte wratjes bezette rups. Daar deze rupsen gezellig leven en er niet zelden een
vereeniging plaats vindt van verscheidene gezelschappen, kan het voorkomen, dat
geheele takken van den appelboom met een sluier omgeven zijn en dat het groen binnen
dit nest hoe langer hoe meer afneemt, daar van de bladen ten slotte alleen de nerven en
een der opperhuidlagen overblijven. Wanneer zij een tak hebben leeggevreten, trekken
zij verder en tasten een andere aan; hieraan ontleenen zij waarschijnlijk den naam van
T r e k m a d e n , dien men haar in Gelderland geeft, waar zij soms in de
appelboomgaarden groote schade aanrichten (Ritzema Bos). Zoodra zij volwassen zijn,
verpoppen zij zich ieder afzonderlijk in een kleverigen, haverkorrelvormigen cocon, die
de korte en dikke, roodachtig gele pop niet geheel aan ’t oog onttrekt. Ieder nest bevat
groote kluiten van dergelijke cocons.

De A k k e r u i l m o t t e n (Depressaria) vervangen in de familie der Motten het


Uilengeslacht Agrotis door de sombere kleuren van de vleugels, die plat op het zijdelings
verbreede achterlijf rusten, voorts door haar wijze van opvliegen of wegloopen, als zij
over dag gestoord worden. De leden van dit omvangrijke geslacht (60 Europeesche, een
tiental inheemsche soorten) overwinteren in den imago-toestand. Vele van de rupsen
bewonen de bloeiwijzen van schermbloemige planten, ook nadat de vruchten zich
ontwikkeld hebben.

Voor den landbouw schadelijk is de K a r w ij m o t (Depressaria nervosa), die hare


eieren verspreid op de karwij, of, wanneer deze plant niet aanwezig is, op andere
schermbloemigen legt. Zoodra de karwij in vollen bloei staat, merkt men de rupsen op;
zij vreten aan de bloemen en jonge zaden; indien deze beide niet meer in voldoende
hoeveelheid voorhanden zijn, tasten zij ook de saprijkste takjes aan. Soms begroot men
de door haar aangerichte schade op meer dan de helft van den oogst, dien men in
gunstiger omstandigheden verkregen zou hebben. In ons land heeft men, naar het schijnt,
tot heden niet veel last van dit Insect gehad. Om zich te verpoppen begeeft de rups zich
binnen in den stengel der plant en knaagt zich hier een geschikte rustplaats uit; nadat de
opening met een schuins dekseltje is dicht gesponnen, verandert zij in een van boven
naar onderen eenigszins afgeplatte pop. Als de rupsen zeer talrijk zijn, vindt men soms in
een plant 30 à 40 gaten, die tot een even groot aantal poppenwoningen toegang
verschaffen: hierdoor gelijkt zulk een stengel meer op een fluit dan de koolzaadhauw, die
door den Fluitjesmaker is aangetast.

De Mot, die uit de K o k e r r u p s v a n d e n L o r k ontstaat (Coleophora laricinella),


heeft bruinachtig grijze, zwak glanzige, langwerpige voorvleugels met lange, glanslooze
franje. Zij verschijnt in de tweede helft van Mei, in bergstreken eerst in Juni; over dag
ziet men haar zeer snel om de takken der lorken vliegen, of langs de naalden op en neer
loopen, om op elke naald een van hare zeer kleine eieren te leggen. Weldra komt hieruit
een rupsje, dat op de plaats, waar het ei ligt, in de naald doordringt en deze
langzamerhand leegvreet. Eerst tegen het midden van September, kort vóór het afvallen
der naalden (die bij den lork slechts één jaar aan den boom blijven en bij bundeltjes uit
dwergloten ontspruiten), is het bovenste deel van de aangetaste naald over een lengte
van 4 à 7 mM. geheel uitgehold en witachtig van kleur. Het voorgevoel van den
naderenden winter noopt de rups het holle gedeelte van de naald, waarin zij zich bevindt,
af te snijden, om op deze wijze een kokertje te verkrijgen, dat zij al kruipend medevoert,
daar de kop en de borstringen er uitsteken; aan ’t tegenovergestelde einde heeft zij een
opening gemaakt voor het verwijderen van den drek. Het kokertje is bruin en heeft de
grootte van een kleine gerstkorrel; de rups hecht het vast aan een knop en overwintert
hier. In ’t volgende voorjaar, als de nieuwe naalden te voorschijn komen, wordt één
daarvan dadelijk door de kokerrups aangetast; deze knaagt een opening in den top van
het blad en holt dit al verder en verder uit, naarmate het van onderen aangroeit. Tegen
het midden van April is de rups zoo dik, dat het kokertje noodzakelijk vergroot moet
worden; dit geschiedt, door de laatst uitgeholde naald af te snijden, overlangs open te
splijten en door spinsel met het eveneens opengespleten, oude huisje tot een wijderen
koker te vereenigen. Van de eene naald naar de andere trekkend, richten de vraatzuchtige
diertjes groote schade aan, zoodat de top van den lork bruin wordt. Tegen het einde van
April verpopt de hoogstens 5 mM. lange rups zich in haar vooraf vastgesponnen koker.
Zij is donker roodbruin, op den kop het donkerst, heeft kleine borst- en buikpooten, doch
zeer groote naschuivers, waarmede zij zich aan den koker vasthoudt. Na een rusttijd van
2 of 3 weken, meestal reeds voor het einde van Mei, verlaat het 9 mM. spannende
vlindertje de pophuid, die in den koker achterblijft.
Slechts enkele woorden kunnen wij wijden aan de 3 nog overige familiën van
Microlepidopteren. Twee daarvan—Pterophorina en Alucitina—worden meestal
gezamenlijk Ve d e r m o t t e n genoemd, omdat hunne vleugels overlangs tot aan het
midden of zelfs tot dicht bij den wortel in slippen zijn verdeeld, die aan weerszijden
franje dragen en hierdoor op vedertjes gelijken. Bij de P t e r o p h o r i n e n (met
uitzondering van Agdistes, die ongespleten vleugels heeft) bedraagt het aantal slippen in
den voorvleugel 2, in den achtervleugel 3. Het zijn slanke vlindertjes met zeer lange
pooten; vooral de achterpooten zijn zeer lang en worden in rust tegen het achterlijf
aangelegd. Zij vliegen ’s avonds en rusten over dag. In rust worden de vleugels
horizontaal zijwaarts gericht en wegens het over elkander schuiven der slippen zoo smal,
dat ook hierdoor deze Insecten aan Langpootige Muggen herinneren. De kop draagt half
bolvormige oogen, geen bijoogen, draadvormige sprieten, een langen zuiger zonder
bijpalpen, tusschen 2 vooruitstekende liptasters. De rupsen hebben 16 pooten; sommige
leven vrij aan de oppervlakte van de plant, andere verborgen in knoppen, zaden of
stengels.

Op stille avonden van Juli tot September vliegt Pterophorus pendadactylus langzaam in
droge tuinen rond, reeds op een afstand kenbaar aan zijn sneeuwwitte kleur (vlucht 28 à
30 mM.). Zijn groene rups leeft op winden (Convolvulus sepium en C. arvensis).

De A l u c i t i n e n vormen een nog kleinere familie (9 Europeesche, 2 inheemsche


soorten) dan de vorige, van welke zij verschillen door hunne ieder in 6 slippen
verdeelde, in rust waaiervormig zijwaarts uitgespreide vleugels en door het bezit van
bijoogen.

De grijsgroene rups van Alucita hexadactyla leeft in bloemknoppen van verschillende


soorten van kamperfoelie (Lonicera). Soms komen 2 generaties voor. Het vlindertje
heeft 15 à 18 mM. vlucht en vliegt van Juli tot in den herfst, soms ook in de lente. Zijn
kleur is lichtgeelachtig grijs met 2 grijze, witgezoomde dwarsbanden over de
voorvleugels.

De familie van de A d e r m o t t e n (Micropterygida) omvat 2 geslachten met 24


Europeesche en 2 inheemsche soorten; zij is kenbaar aan eigenaardigheden van het
vleugeladerstelsel en van de monddeelen. Dit laatste geldt vooral van het geslacht
Eriocephala. De rupsen zijn pootloos bij Micropteryx; zij hebben 22 pooten bij
Eriocephala. De meeste knagen gangen in het bladmoes.
VIERDE ORDE.
DE TWEEVLEUGELIGEN (D i p t e r a , A n t l i at a ).
De Tweevleugeligen zijn gemakkelijk te herkennen, daar zij slechts t w e e v l e u g e l s
hebben. Met den ongeleden, nooit opgerolden zuiger, die grootendeels door de onderlip
wordt gevormd, nemen sommige bloed, de meeste echter ander vloeibaar voedsel op. De
drie ringen van het borststuk zijn onderling vergroeid. Hun gedaantewisseling is
volkomen: er bestaat een zeer belangrijk verschil tusschen de drie vormen, waarin het
dier achtereenvolgens voorkomt. Door het maaksel van den stam van het lichaam
stemmen de Tweevleugeligen met de leden der beide vorige orden overeen. De kop is
door een dun draadje met het borststuk verbonden en kan ver naar rechts en naar links
gedraaid worden. Van den eersten der drie borstringen ziet men van boven alleen de
beide schouderknobbels; de tweede is het sterkst ontwikkeld, daar hij de beide vleugels
draagt; het schildje is steeds duidelijk zichtbaar, meestal zoo groot, dat de rug van het
naborststuk er door bedekt is. De rug van alle 3 ringen te zamen genomen noemt men
gewoonlijk het r u g s c h i l d . Het achterlijf is zittend of aanhangend, slechts zelden
gesteeld. Het bestaat uit 4 à 8 ringen. Ook door de bekleeding van het lichaam zijn de
Vliegen het naast aan de Vliesvleugeligen verwant; want, wanneer het niet naakt is,
draagt het alleen haren, meestal borstels, soms een wollige vacht, zooals b.v. sommige
Bijen hebben, hoogst zelden daarentegen schubben, die zoo dikwijls aan de Vlinders (en
ook aan de Kevers) een kleed verschaffen. Elke poot is door een kegelvormige heup met
het borststuk verbonden, heeft een dijring, een 5-ledigen voet, welks eerste lid (hiel) in
den regel lang is, terwijl het laatste twee klauwen draagt; tusschen deze merkt men
dikwijls een bijklauw op; vaker echter komen 2 of 3 zoolvormige kussentjes
(p a l e t t e n of p u l v i l l e n ) voor, die de Vliegen in staat stellen om op de gladste
voorwerpen niet minder veilig te loopen dan op oneffene oppervlakten.

De vleugels, waarop dikwijls duidelijk zichtbare, doch vaker microscopisch fijne haren
voorkomen, zijn bij sommige soorten glashelder, bij andere in meerdere of mindere mate
ondoorzichtig, bij nog andere op sierlijke wijze bont gevlekt. Daar de Tweevleugeligen
in andere opzichten zeer gelijkvormig zijn, spelen de vleugels door de eigenaardigheden
van hun aderstelsel een belangrijke rol bij de onderscheiding der groepen en vereischen
daarom een (zij het ook korte) beschrijving. De overlangsche aderen hebben de
overhand, daarom zijn de meeste cellen langwerpig. Wanneer men de vleugeladers met
eenigen aandacht beschouwt, merkt men, hoeveel verschil haar vertakking ook aanbiedt,
t w e e hoofdstammen op, die zelfstandig van den wortel uitgaan en, althans in de
nabijheid van hun oorsprong, een meer of minder breede tusschenruimte overlaten.
Altijd zijn deze beide hoofdstammen door een dwarsader (x) verbonden. In de nabijheid
van den binnenrand ziet men, meestal onduidelijk, soms echter zonder moeite, een
derden, zelfstandig uit den vleugelwortel ontspringenden stam (g). De voorrand zelf
vormt de r a n d a d e r (costa), die bij de nadere aanduiding der overlangsche aders
n i e t m e d e g e t e l d wordt. Men heeft hierbij in het oog te houden, dat d r i e van
deze aders tot den voorsten, d r i e tot den achtersten hoofdstam behooren, zoodat in ’t
geheel slechts 6 overlangsche aders een rangnummer krijgen; het is tusschen de derde (c)
en de vierde (d), dat de vroeger genoemde verbinding der beide hoofdstammen door de
zoogenaamde k l e i n e of v o o r s t e d w a r s a d e r , ook wel eenvoudig
d w a r s a d e r genoemd (x) tot stand komt. De e e r s t e o v e r l a n g s c h e a d e r (a)
ontspringt uit den vleugelwortel en splitst zich dikwijls op korten afstand van daar in
twee takken. De eene, de m e d i a s t i n a a l a d e r , is naar boven gericht en eindigt altijd
in den voorrand op een plaats, die men ook wel de r a n d v l e k noemt. De andere tak,
die meer bepaaldelijk e e r s t e o v e r l a n g s c h e a d e r (s u b c o s t a a l - of
o n d e r r a n d a d e r ) heet, mondt eveneens in de costa uit, maar kan zich ook naar de
volgende of t w e e d e o v e r l a n g s c h e a d e r (de r a d i a a l a d e r , b) wenden, die
uit de eerste ontspruit en in den voorrand, dikwijls ook in de eerste overlangsche ader
eindigt. De d e r d e o v e r l a n g s c h e a d e r (c u b i t a a l a d e r , c) gaat altijd van de
tweede uit, of indien deze ontbreekt, van de eerste. De v i e r d e o v e r l a n g s c h e
a d e r (d i s c o ï d a a l - of m i d d e l a d e r , d) is de bovenste tak van den tweeden
hoofdstam; soms buigt zij zich bovenwaarts naar de derde overlangsche ader en heet dan
t o p d w a r s a d e r . De v ij f d e o v e r l a n g s c h e a d e r (p o s t i c a a l a d e r , e)
komt direct uit den vleugelwortel; zij ontbreekt n o o i t en is als dikste tak van den
tweeden hoofdstam de voornaamste steun van de achterste helft van den vleugel. Zij
mondt uit in den achterrand of in de z e s d e o v e r l a n g s c h e a d e r (de
a n a a l a d e r , f), die uit haar ontspringt. Wanneer verder achterwaarts nog een
overlangsche ader gevonden wordt, komt deze uit den wortel voort, behoort tot den
derden stam en heet o k s e l a d e r (g). Wanneer, zooals in den vleugel van de Mug, een
m i d d e l - of d i s c o ï d a a l c e l (5) aanwezig is, gaan hiervan een aantal overlangsche
aders uit, die niet op dezelfde wijze als de overige gesteld worden, maar eenvoudig als
“uit de middelcel ontspringende aders” worden aangeduid. Bovendien kunnen in den
vleugel, behalve de beide reeds genoemde, nog eenige andere dwarsaders voorkomen,
n.l. de a c h t e r s t e of g r o o t e d w a r s a d e r (d), die in de nabijheid van den
achterrand de vierde met de vijfde overlangsche ader verbindt, de v o o r s t e
w o r t e l d w a r s a d e r (y), die in andere gevallen tusschen dezelfde aders een brug
vormt, doch zeer dicht bij den wortel gelegen is, waar ook de a c h t e r s t e
w o r t e l d w a r s a d e r zich bevindt, die de beide volgende overlangsche aders
vereenigt; de s c h o u d e r d w a r s a d e r (h u m e r a a l a d e r , s) eindelijk brengt de
eerste overlangsche ader met den voorrand in gemeenschap.
Vleugel van een Mug.

Vleugel van een Muscide.

a) Eerste, b) tweede, c) derde, d) vierde, e) vijfde, f) zesde overlangsche ader. x) Kleine dwarsader. y)
Voorste worteldwarsader. s) Schouderdwarsader. a) Vleugellapje.

1) Voorste wortelcel of basaalcel. 2) Eerste achterrandcel, waarop in de vleugel van de Mug nog
verscheidene achterrandcellen volgen. 3) Anaalcel. 4) Achterste wortelcel. 5) Middelcel of discoïdaalcel. 6)
Okselcel. 7) Lapcel. 8) Onderrandcel. 9 en 10) Randcellen. 11) Voorrandcel.

Bij vele familiën vindt men achter den vleugel nog een meer of minder groot,
enkelvoudig of dubbel v l e u g e l s c h u b j e , waardoor de k o l f j e s (h a l t e r e n )
geheel of gedeeltelijk bedekt worden. Deze op een steel rustende knopjes, die licht in ’t
oog vallen, wanneer zij, zooals bij de Muggen, “onbedekt” zijn, komen uitsluitend bij de
Tweevleugeligen voor (slechts bij een paar soorten ontbreken zij). Over de beteekenis
der kolfjes zijn zeer verschillende meeningen uitgesproken. Zeker is het, dat zij
overblijfselen zijn van de bij andere Insecten tot vliegwerktuigen ontwikkelde
achtervleugels. Volgens de nieuwste onderzoekingen dienen zij als stuurorganen bij het
vliegen. Anderen zijn van oordeel, dat zij in de eerste plaats noodig zijn voor de
beweging der “bromringen,” dus tot het voortbrengen van de stem, en eerst hierdoor
invloed oefenen op de ademhaling en de geschiktheid voor het vliegen. Het geluid, dat
de Tweevleugeligen maken, komt tot stand, deels door de trillingen der vleugels, deels
door wrijving van de achterlijfsringen en van den kop, deels door de 4 ademgaten van
het borststuk (2 aan het voorste, 2 aan het achterste segment). Bij de Vliegen en Muggen
zijn de ademgaten van het borststuk in stemorganen veranderd, bij sommige alle 4, bij
andere slechts 2: alleen de voorste of alleen de achterste. Iedere bromtoestel heeft
ongeveer de volgende inrichting: de talrijke luchtbuizen van het borststuk vereenigen
zich allengs, totdat zij in de nabijheid van ieder ademgat een enkele buis vormen. Deze
verwijdt zich aan het einde tot een halfbolvormige blaas, welker buitenste opening
tevens de rand van het ademgat is en welker talrijke, door chitine verharde plooien
gezamenlijk gesteund worden door den “bromring”, die onmiddellijk onder het ademgat
gelegen is. Door de lucht, welke de tracheeën uitwerpen of in zich opnemen, worden de
chitineplaatjes van de “bromholte” in trilling gebracht. Daar het dus gevormde geluid
met de ademhalingswerktuigen wordt voortgebracht, mag men het “stem” noemen.
Meestal wordt het grootste deel van den kop ingenomen door de oogen, die soms naakt,
soms behaard zijn, bij vele mannetjes op de kruin elkander raken, daarentegen bij het
wijfje steeds gescheiden blijven, zij het dan ook slechts door de smalle
v o o r h o o f d s s t r i e m . In den regel zijn drie bijoogen aanwezig.

De monddeelen werden reeds besproken en (in fig. 11) afgebeeld. Bij de bloedzuigende
soorten zijn zij hoornachtig, bij de andere weeker; de verschillende organen, die bij
andere Insecten voor ’t bijten of kauwen dienen, vormen bij gene een s t e e k s n u i t , bij
deze een s c h e p - of z u i g s n u i t .

Het deel van den kop, dat tusschen de sprieten, den binnenrand der oogen en den
mondrand gelegen is, wordt a a n g e z i c h t (epistoma) genoemd; de baardvormige
beharing, die soms hierop voorkomt, heet k n e v e l (mystax), in tegenstelling met de
b a k k e b a a r d (barba), die het onder de oogen gelegen deel van den kop, de
“wangen”, soms bedekt en ook wel aan den onderrand van den mond gevonden wordt.
De alleenstaande haren, die de z ij d e n van het ondergezicht insluiten, heeten
k n e v e l b o r s t e l s . Niet zelden onderscheiden enkele van de borstelige haren van het
lichaam, vooral van het achterlijf, zich door dikte en lengte; men noemt ze g r o o t e
b o r s t e l s (m a c r o c h e t e n ), als zij een bijzondere vermelding verdienen.

De sprieten zijn volgens twee aanmerkelijk verschillende typen gebouwd. Bij de


L a n g h o o r n i g e n of L a n g s p r i e t i g e n (Nematocera) bestaan zij uit vele leden
(soms niet minder dan 36). Bij de K o r t h o o r n i g e n of K o r t s p r i e t i g e n
(Brachycera) worden twee korte, ringvormige grondleden gevolgd door een grooter
eindlid van zeer verschillenden vorm, dat aan of vóór zijn spits een fijnen
s p r i e t b o r s t e l draagt.

Bij de meeste Tweevleugeligen begint de ontwikkeling der larven, evenals bij de tot
dusver genoemde Insecten, eerst na het leggen der eieren. Bij sommige soorten, o.a. bij
de bekende Vleeschvliegen en vele Rupsenvliegen, nemen de bedoelde verschijnselen
reeds vroeger een aanvang en zijn, voordat het ei ter wereld komt, zoover
voortgeschreden, dat de larve onmiddellijk daarna de dunne eischaal verlaat. Zulke
Insecten noemt men o v o v i v i p a a r . Bij de “p u p i p a r e ” Luisvliegen blijft de larve
in de afvoerbuis van de eieren-voortbrengende organen en voedt zich met het vocht, dat
door een soort van “melkklieren” voor haar afgescheiden en in deze buis uitgestort
wordt, totdat zij rijp is om in den poptoestand over te gaan, hetgeen onmiddellijk na de
geboorte geschiedt.

Te recht worden de larven van de Tweevleugeligen “maden” genoemd. Ware pooten


komen bij haar niet voor; zeer vele zijn zelfs geheel verstoken van pooten. Sommige
hebben aan het eerste rompsegment een onparigen b u i k p o o t of een paar op valsche
pooten van rupsen gelijkende bewegingsorganen. Bij vele vindt men aan de buikzijde
Welcome to Our Bookstore - The Ultimate Destination for Book Lovers
Are you passionate about books and eager to explore new worlds of
knowledge? At our website, we offer a vast collection of books that
cater to every interest and age group. From classic literature to
specialized publications, self-help books, and children’s stories, we
have it all! Each book is a gateway to new adventures, helping you
expand your knowledge and nourish your soul
Experience Convenient and Enjoyable Book Shopping Our website is more
than just an online bookstore—it’s a bridge connecting readers to the
timeless values of culture and wisdom. With a sleek and user-friendly
interface and a smart search system, you can find your favorite books
quickly and easily. Enjoy special promotions, fast home delivery, and
a seamless shopping experience that saves you time and enhances your
love for reading.
Let us accompany you on the journey of exploring knowledge and
personal growth!

ebookgate.com

You might also like