You are on page 1of 54

OpenGL Programming Guide The

Official Guide to Learning OpenGL


Version 4 5 with SPIR V 9th Edition
Kessenich
Visit to download the full and correct content document:
https://textbookfull.com/product/opengl-programming-guide-the-official-guide-to-learni
ng-opengl-version-4-5-with-spir-v-9th-edition-kessenich/
More products digital (pdf, epub, mobi) instant
download maybe you interests ...

Computer Graphics Programming in OpenGL with Java 2nd


Edition V. Scott Gordon

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

Computer Graphics Programming in OpenGL with Java


Gordon

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

Learn OpenGL Learn modern OpenGL graphics programming


in a step by step fashion 1st Edition Joey De Vries

https://textbookfull.com/product/learn-opengl-learn-modern-
opengl-graphics-programming-in-a-step-by-step-fashion-1st-
edition-joey-de-vries/

Introduction to Computer Graphics with OpenGL ES First


Edition Junghyun Han

https://textbookfull.com/product/introduction-to-computer-
graphics-with-opengl-es-first-edition-junghyun-han/
Computer Graphics Programming in OpenGL Using C++,
Third Edition Gordon Phd

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

Computer graphics through openGL Third Edition Guha

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

Computer Graphics Through OpenGL: From Theory to


Experiments Sumanta Guha

https://textbookfull.com/product/computer-graphics-through-
opengl-from-theory-to-experiments-sumanta-guha/

The Hitchhiker s Guide to Online Anonymity Version 0 9


4 May 2021 Anonymousplanet

https://textbookfull.com/product/the-hitchhiker-s-guide-to-
online-anonymity-version-0-9-4-may-2021-anonymousplanet/

A Student s Guide to Liberal Learning James V. Schall

https://textbookfull.com/product/a-student-s-guide-to-liberal-
learning-james-v-schall/
About This E-Book
EPUB is an open, industry-standard format for e-books. However,
support for EPUB and its many features varies across reading
devices and applications. Use your device or app settings to
customize the presentation to your liking. Settings that you can
customize often include font, font size, single or double column,
landscape or portrait mode, and figures that you can click or tap to
enlarge. For additional information about the settings and features
on your reading device or app, visit the device manufacturer’s Web
site.
Many titles include programming code or configuration examples.
To optimize the presentation of these elements, view the e-book in
single-column, landscape mode and adjust the font size to the
smallest setting. In addition to presenting code and configurations in
the reflowable text format, we have included images of the code
that mimic the presentation found in the print book; therefore,
where the reflowable format may compromise the presentation of
the code listing, you will see a “Click here to view code image” link.
Click the link to view the print-fidelity code image. To return to the
previous page viewed, click the Back button on your device or app.
OpenGL® Programming Guide
Ninth Edition

The Official Guide to Learning OpenGL®,


Version 4.5 with SPIR-V

John Kessenich
Graham Sellers
Dave Shreiner

Boston • Columbus • Indianapolis • New York • San Francisco •


Amsterdam • Cape Town
Dubai • London • Madrid • Milan • Munich • Paris • Montreal •
Toronto • Delhi • Mexico City
São Paulo • Sydney • Hong Kong • Seoul • Singapore • Taipei •
Tokyo
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.
For information about buying this title in bulk quantities, or for
special sales opportunities (which may include electronic versions;
custom cover designs; and content particular to your business,
training goals, marketing focus, or branding interests), please
contact our corporate sales department at
corpsales@pearsoned.com or (800) 382-3419.
For government sales inquiries, please contact
governmentsales@pearsoned.com.
For questions about sales outside the U.S., please contact
intlcs@pearson.com.
Visit us on the Web: informit.com/aw
Library of Congress Control Number: 2016939338
Copyright © 2017 Pearson Education, Inc.
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, request forms and the
appropriate contacts within the Pearson Education Global Rights &
Permissions Department, please visit
www.pearsoned.com/permissions/.
ISBN-13: 978-0-13-449549-1
ISBN-10: 0-13-449549-7
Text printed in the United States on recycled paper at RR Donnelley
in Crawfordsville, Indiana.
First printing, July 2016
Praise for previous editions of
OpenGL® Programming Guide
“Wow! This book is basically one-stop shopping for OpenGL
information. It is the kind of book that I will be reaching for a
lot. Thanks to Dave, Graham, John, and Bill for an amazing
effort.”
—Mike Bailey, professor, Oregon State University
“The most recent Red Book parallels the grand tradition of
OpenGL; continuous evolution towards ever-greater power
and efficiency. The eighth edition contains up-to-the minute
information about the latest standard and new features,
along with a solid grounding in modern OpenGL techniques
that will work anywhere. The Red Book continues to be an
essential reference for all new employees at my simulation
company. What else can be said about this essential guide? I
laughed, I cried, it was much better than Cats—I’ll read it
again and again.”
—Bob Kuehne, president, Blue Newt Software
“OpenGL has undergone enormous changes since its
inception twenty years ago. This new edition is your practical
guide to using the OpenGL of today. Modern OpenGL is
centered on the use of shaders, and this edition of the
Programming Guide jumps right in, with shaders covered in
depth in Chapter 2. It continues in later chapters with even
more specifics on everything from texturing to compute
shaders. No matter how well you know it or how long you’ve
been doing it, if you are going to write an OpenGL program,
you want to have a copy of the OpenGL® Programming
Guide handy.”
—Marc Olano, associate professor, UMBC
“If you are looking for the definitive guide to programming
with the very latest version of OpenGL, look no further. The
authors of this book have been deeply involved in the
creation of OpenGL 4.3, and everything you need to know
about the cutting edge of this industry-leading API is laid out
here in a clear, logical, and insightful manner.”
—Neil Trevett, president, Khronos Group
To Brenda, Alison, and Noname
—JMK

To Chris, J., and Emily


—GJAS

To my family—Vicki, Bonnie, Bob, Cookie, Goatee, Phantom,


Squiggles,
Tuxedo, and Toby
—DRS
Contents
Figures
Tables
Examples
About This Guide
What This Guide Contains
What’s New in This Edition
What You Should Know Before Reading This Guide
How to Obtain the Sample Code
Errata
Style Conventions
About the OpenGL Series
Acknowledgments
1. Introduction to OpenGL
What Is OpenGL?
Your First Look at an OpenGL Program
OpenGL Syntax
OpenGL’s Rendering Pipeline
Preparing to Send Data to OpenGL
Sending Data to OpenGL
Vertex Shading
Tessellation Shading
Geometry Shading
Primitive Assembly
Clipping
Rasterization
Fragment Shading
Per-Fragment Operations
Our First Program: A Detailed Discussion
Entering main()
OpenGL Initialization
Our First OpenGL Drawing
2. Shader Fundamentals
Shaders and OpenGL
OpenGL’s Programmable Pipeline
An Overview of the OpenGL Shading Language
Creating Shaders with GLSL
Storage Qualifiers
Statements
Computational Invariance
Shader Preprocessor
Compiler Control
Global Shader-Compilation Option
Interface Blocks
Uniform Blocks
Specifying Uniform Blocks in Shaders
Accessing Uniform Blocks from Your Application
Buffer Blocks
In/Out Blocks, Locations, and Components
Compiling Shaders
Shader Subroutines
GLSL Subroutine Setup
Selecting Shader Subroutines
Separate Shader Objects
SPIR-V
Reasons to Choose SPIR-V
Using SPIR-V with OpenGL
Using GLSL to Generate SPIR-V for OpenGL
Glslang
What’s Inside SPIR-V?
3. Drawing with OpenGL
OpenGL Graphics Primitives
Points
Lines, Strips, and Loops
Triangles, Strips, and Fans
Data in OpenGL Buffers
Creating and Allocating Buffers
Getting Data into and out of Buffers
Accessing the Content of Buffers
Discarding Buffer Data
Vertex Specification
VertexAttribPointer in Depth
Static Vertex-Attribute Specification
OpenGL Drawing Commands
Restarting Primitives
Instanced Rendering
4. Color, Pixels, and Fragments
Basic Color Theory
Buffers and Their Uses
Clearing Buffers
Masking Buffers
Color and OpenGL
Color Representation and OpenGL
Smoothly Interpolating Data
Testing and Operating on Fragments
Scissor Test
Multisample Fragment Operations
Stencil Test
Stencil Examples
Depth Test
Blending
Logical Operations
Occlusion Query
Conditional Rendering
Multisampling
Sample Shading
Per-Primitive Antialiasing
Antialiasing Lines
Antialiasing Polygons
Reading and Copying Pixel Data
Copying Pixel Rectangles
5. Viewing Transformations, Culling, Clipping, and
Feedback
Viewing
Viewing Model
Camera Model
Orthographic Viewing Model
User Transformations
Matrix Multiply Refresher
Homogeneous Coordinates
Linear Transformations and Matrices
Transforming Normals
OpenGL Matrices
OpenGL Transformations
Advanced: User Culling and Clipping
Controlling OpenGL Transformations
Transform Feedback
Transform Feedback Objects
Transform Feedback Buffers
Configuring Transform Feedback Varyings
Starting and Stopping Transform Feedback
Transform Feedback Example—Particle System
6. Textures and Framebuffers
Introduction to Texturing
Basic Texture Types
Creating and Initializing Textures
Proxy Textures
Specifying Texture Data
Explicitly Setting Texture Data
Loading Textures from Buffers
Loading Images from Files
Retrieving Texture Data
Texture Data Layout
Texture Formats
Internal Formats
External Formats
Compressed Textures
Sampler Objects
Sampler Parameters
Using Textures
Texture Coordinates
Arranging Texture Data
Using Multiple Textures
Complex Texture Types
3D Textures
Array Textures
Cube-Map Textures
Shadow Samplers
Depth-Stencil Textures
Buffer Textures
Texture Views
Filtering
Linear Filtering
Using and Generating Mipmaps
Calculating the Mipmap Level
Mipmap Level-of-Detail Control
Advanced Texture Lookup Functions
Explicit Level of Detail
Explicit Gradient Specification
Texture Fetch with Offsets
Projective Texturing
Texture Queries in Shaders
Gathering Texels
Combining Special Functions
Bindless Textures
Texture Handles
Texture Residency
Sampling Bindless Textures
Sparse Textures
Sparse Texture Commitment
Sparse Texture Pages
Point Sprites
Textured Point Sprites
Controlling the Appearance of Points
Framebuffer Objects
Rendering to Texture Maps
Discarding Rendered Data
Renderbuffers
Creating Renderbuffer Storage
Framebuffer Attachments
Framebuffer Completeness
Invalidating Framebuffers
Writing to Multiple Renderbuffers Simultaneously
Selecting Color Buffers for Writing and Reading
Dual-Source Blending
Chapter Summary
Texture Redux
Texture Best Practices
7. Light and Shadow
Lighting Introduction
Classic Lighting Model
Fragment Shaders for Different Light Styles
Moving Calculations to the Vertex Shader
Multiple Lights and Materials
Lighting Coordinate Systems
Limitations of the Classic Lighting Model
Advanced Lighting Models
Hemisphere Lighting
Image-Based Lighting
Lighting with Spherical Harmonics
Shadow Mapping
Creating a Shadow Map
Using a Shadow Map
8. Procedural Texturing
Procedural Texturing
Regular Patterns
Toy Ball
Lattice
Procedural Shading Summary
Bump Mapping
Application Setup
Vertex Shader
Fragment Shader
Normal Maps
Antialiasing Procedural Textures
Sources of Aliasing
Avoiding Aliasing
Increasing Resolution
Antialiasing High Frequencies
Frequency Clamping
Procedural Antialiasing Summary
Noise
Definition of Noise
Noise Textures
Trade-Offs
A Simple Noise Shader
Turbulence
Marble
Granite
Wood
Noise Summary
Further Information
9. Tessellation Shaders
Tessellation Shaders
Tessellation Patches
Tessellation Control Shaders
Generating Output-Patch Vertices
Tessellation Control Shader Variables
Controlling Tessellation
Tessellation Evaluation Shaders
Specifying the Primitive Generation Domain
Specifying the Face Winding for Generated Primitives
Specifying the Spacing of Tessellation Coordinates
Additional Tessellation Evaluation Shader layout Options
Specifying a Vertex’s Position
Tessellation Evaluation Shader Variables
A Tessellation Example: The Teapot
Processing Patch Input Vertices
Evaluating Tessellation Coordinates for the Teapot
Additional Tessellation Techniques
View-Dependent Tessellation
Shared Tessellated Edges and Cracking
Displacement Mapping
10. Geometry Shaders
Creating a Geometry Shader
Geometry Shader Inputs and Outputs
Geometry Shader Inputs
Special Geometry Shader Primitives
Geometry Shader Outputs
Producing Primitives
Culling Geometry
Geometry Amplification
Advanced Transform Feedback
Multiple Output Streams
Primitive Queries
Using Transform Feedback Results
Geometry Shader Instancing
Multiple Viewports and Layered Rendering
Viewport Index
Layered Rendering
Chapter Summary
Geometry Shader Redux
Geometry Shader Best Practices
11. Memory
Using Textures for Generic Data Storage
Binding Textures to Image Units
Reading and Writing to Images
Shader Storage Buffer Objects
Writing Structured Data
Atomic Operations and Synchronization
Atomic Operations on Images
Atomic Operations on Buffers
Sync Objects
Image Qualifiers and Barriers
High-Performance Atomic Counters
Example: Order-Independent Transparency
Principles of Operation
Initialization
Rendering
Sorting and Blending
Results
12. Compute Shaders
Overview
Workgroups and Dispatch
Knowing Where You Are
Communication and Synchronization
Communication
Synchronization
Examples
Physical Simulation
Image Processing
Chapter Summary
Compute Shader Redux
Compute Shader Best Practices
A. Support Libraries
Basics of GLFW: The OpenGL Utility Framework
Initializing and Creating a Window
Handling User Input
Controlling the Window
Shutting Down Cleanly
GL3W: OpenGL Glue
B. OpenGL ES and WebGL
OpenGL ES
WebGL
Setting Up WebGL Within an HTML5 Page
Initializing Shaders in WebGL
Initializing Vertex Data in WebGL
Using Texture Maps in WebGL
C. Built-in GLSL Variables and Functions
Built-in Variables
Built-in Variable Declarations
Built-in Variable Descriptions
Built-in Constants
Built-in Functions
Angle and Trigonometry Functions
Exponential Functions
Common Functions
Floating-Point Pack and Unpack Functions
Geometric Functions
Matrix Functions
Vector Relational Functions
Integer Functions
Texture Functions
Atomic-Counter Functions
Atomic Memory Functions
Image Functions
Fragment Processing Functions
Geometry Shader Functions
Shader Invocation Control Functions
Shader Memory Control Functions
D. State Variables
The Query Commands
OpenGL State Variables
Current Values and Associated Data
Vertex Array Object State
Vertex Array Data
Buffer Object State
Transformation State
Coloring State
Rasterization State
Multisampling
Textures
Pixel Operations
Framebuffer Controls
Framebuffer State
Renderbuffer State
Pixel State
Shader Object State
Shader Program Pipeline Object State
Shader Program Object State
Program Interface State
Program Object Resource State
Vertex and Geometry Shader State
Query Object State
Image State
Transform Feedback State
Atomic Counter State
Shader Storage Buffer State
Sync Object State
Hints
Compute Dispatch State
Implementation-Dependent Values
Tessellation Shader Implementation-Dependent Limits
Geometry Shader Implementation-Dependent Limits
Fragment Shader Implementation-Dependent Limits
Implementation-Dependent Compute Shader Limits
Implementation-Dependent Shader Limits
Implementation-Dependent Debug Output State
Implementation-Dependent Values
Internal Format-Dependent Values
Implementation-Dependent Transform Feedback Limits
Framebuffer-Dependent Values
Miscellaneous
E. Homogeneous Coordinates and Transformation Matrices
Homogeneous Coordinates
Transforming Vertices
Transforming Normals
Transformation Matrices
Translation
Scaling
Rotation
Perspective Projection
Orthographic Projection
F. Floating-Point Formats for Textures, Framebuffers, and
Renderbuffers
Reduced-Precision Floating-Point Values
16-Bit Floating-Point Values
10- and 11-Bit Unsigned Floating-Point Values
G. Debugging and Profiling OpenGL
Creating a Debug Context
Debug Output
Debug Messages
Filtering Messages
Application-Generated Messages
Debug Groups
Naming Objects
Profiling
Profiling Tools
In-Application Profiling
H. Buffer Object Layouts
Using Standard Layout Qualifiers
The std140 Layout Rules
The std430 Layout Rules
Glossary
Index
Figures
Figure 1.1 Image from our first OpenGL program: triangles.cpp
Figure 1.2 OpenGL pipeline
Figure 2.1 Shader-compilation command sequence
Figure 3.1 Vertex layout for a triangle strip
Figure 3.2 Vertex layout for a triangle fan
Figure 3.3 Packing of elements in a BGRA-packed vertex attribute
Figure 3.4 Packing of elements in a RGBA-packed vertex attribute
Figure 3.5 Simple example of drawing commands
Figure 3.6 Using primitive restart to break a triangle strip
Figure 3.7 Two triangle strips forming a cube
Figure 3.8 Result of rendering with instanced vertex attributes
Figure 3.9 Result of instanced rendering using gl_InstanceID
Figure 4.1 Region occupied by a pixel
Figure 4.2 Polygons and their depth slopes
Figure 4.3 Aliased and antialiased lines
Figure 5.1 Steps to configure and position the viewing frustum
Figure 5.2 Coordinate systems required by OpenGL
Figure 5.3 User coordinate systems unseen by OpenGL
Figure 5.4 A view frustum
Figure 5.5 Pipeline subset for user/shader part of transforming
coordinates
Figure 5.6 One-dimensional homogeneous space
Figure 5.7 Translating by skewing
Figure 5.8 Translating an object 2.5 in the x direction
Figure 5.9 Scaling an object to three times its size
Figure 5.10 Scaling an object in place
Figure 5.11 Rotation
Figure 5.12 Rotating in place
Figure 5.13 Frustum projection
Figure 5.14 Orthographic projection
Figure 5.15 z precision
Figure 5.16 Transform feedback varyings packed in a single
buffer
Figure 5.17 Transform feedback varyings packed in separate
buffers
Figure 5.18 Transform feedback varyings packed into multiple
buffers
Figure 5.19 Schematic of the particle system simulator
Figure 5.20 Result of the particle system simulator
Figure 6.1 Byte-swap effect on byte, short, and integer data
Figure 6.2 Subimage identified by *SKIP_ROWS,
*SKIP_PIXELS, and *ROW_LENGTH parameters
Figure 6.3 *IMAGE_HEIGHT pixel storage mode
Figure 6.4 *SKIP_IMAGES pixel storage mode
Figure 6.5 Output of the simple textured quad example
Figure 6.6 Effect of different texture wrapping modes
Figure 6.7 Two textures used in the multitexture example
Figure 6.8 Output of the simple multitexture example
Figure 6.9 Output of the volume texture example
Figure 6.10 A sky box, shown as seen from the outside, from
close up, and from the center
Figure 6.11 A golden environment mapped torus
Figure 6.12 A visible seam in a cube map
Figure 6.13 The effect of seamless cube-map filtering
Figure 6.14 Effect of texture minification and magnification
Figure 6.15 Resampling of a signal in one dimension
Figure 6.16 Bilinear resampling
Figure 6.17 A prefiltered mipmap pyramid
Figure 6.18 Effects of minification mipmap filters
Figure 6.19 Illustration of mipmaps using unrelated colors
Figure 6.20 Result of the simple textured point sprite example
Figure 6.21 Analytically calculated point sprites
Figure 6.22 Smooth edges of circular point sprites
Figure 6.23 Close-up of RGB color elements in an LCD panel
Figure 7.1 Elements of the classic lighting model
Figure 7.2 A sphere illuminated using the hemisphere lighting
model
Figure 7.3 Analytic hemisphere lighting function
Figure 7.4 Lighting model comparison
Figure 7.5 Light probe image
Figure 7.6 Lat-long map
Figure 7.7 Cube map
Figure 7.8 Effects of diffuse and specular environment maps
Figure 7.9 Spherical harmonics lighting
Figure 7.10 Depth rendering
Figure 7.11 Final rendering of shadow map
Figure 8.1 Procedurally striped torus
Figure 8.2 Stripes close-up
Figure 8.3 Brick patterns
Figure 8.4 Visualizing the results of the half-space distance
calculations
Figure 8.5 Intermediate results from “in” or “out” computation
Figure 8.6 Intermediate results from the toy ball shader
Figure 8.7 The lattice shader applied to the cow model
Figure 8.8 Inconsistently defined tangents leading to large
lighting errors
Figure 8.9 Simple box and torus with procedural bump mapping
Figure 8.10 Normal mapping
Figure 8.11 Aliasing artifacts caused by point sampling
Figure 8.12 Supersampling
Figure 8.13 Using the s texture coordinate to create stripes on a
sphere
Figure 8.14 Antialiasing the stripe pattern
Figure 8.15 Visualizing the gradient
Figure 8.16 Effect of adaptive analytical antialiasing on striped
teapots
Figure 8.17 The periodic step function
Figure 8.18 Periodic step function (pulse train) and its integral
Figure 8.19 Brick shader with and without antialiasing
Figure 8.20 Checkerboard pattern
Figure 8.21 A discrete 1D noise function
Figure 8.22 A continuous 1D noise function
Figure 8.23 Varying the frequency and the amplitude of the noise
function
Figure 8.24 Summing noise functions: the result of summing
noise functions of different amplitude and frequency
Figure 8.25 Basic 2D noise, at frequencies 4, 8, 16, and 32
(contrast enhanced)
Figure 8.26 Summed noise, at 1, 2, 3, and 4 octaves (contrast
enhanced)
Figure 8.27 Teapots rendered with noise shaders
Figure 8.28 Absolute-value noise or “turbulence”
Figure 8.29 A bust of Beethoven rendered with the wood shader
Figure 9.1 Quad tessellation
Figure 9.2 Isoline tessellation
Figure 9.3 Triangle tessellation
Figure 9.4 Even and odd tessellation
Figure 9.5 The tessellated patches of the teapot
Figure 9.6 Tessellation cracking
Figure 10.1 Lines adjacency sequence
Figure 10.2 Line-strip adjacency sequence
Figure 10.3 Triangles adjacency sequence
Figure 10.4 Triangle-strip adjacency layout
Figure 10.5 Triangle-strip adjacency sequence
Figure 10.6 Texture used to represent hairs in the fur rendering
example
Figure 10.7 The output of the fur rendering example
Figure 10.8 Schematic of geometry shader sorting example
Figure 10.9 Final output of geometry shader sorting example
Figure 10.10 Output of the viewport-array example
Figure 11.1 Output of the simple load-store shader
Figure 11.2 Timeline exhibited by the naïve overdraw counter
shader
Figure 11.3 Output of the naïve overdraw counter shader
Figure 11.4 Output of the atomic overdraw counter shader
Figure 11.5 Cache hierarchy of a fictitious GPU
Figure 11.6 Data structures used for order-independent
transparency
Figure 11.7 Inserting an item into the per-pixel linked lists
Figure 11.8 Result of order-independent transparency
Figure 12.1 Schematic of a compute workload
Figure 12.2 Relationship of global and local invocation ID
Figure 12.3 Output of the physical simulation program as simple
points
Figure 12.4 Output of the physical simulation program
Figure 12.5 Image processing
Figure 12.6 Image processing artifacts
Figure B.1 WebGL demo
Figure G.1 AMD’s GPUPerfStudio2 profiling Unigine Heaven 3.0
Figure G.2 Screen Shot of Unigine Heaven 3.0
Another random document with
no related content on Scribd:
400 Ore dabant laudes, tacito sub Qualiter, finito
cordeque fraudes; parliamento,
Holand, Kent, Sarum, Spenser, infra breue post
quidam impii
quasi fellis amarum,
instigante
Federa strinxerunt, quibus H. diabolo, vt ipsi
seducere querunt. pium Regem
Viuere quos fecit pius H., nec eis Henricum cum
male fecit, 724 sua progenie a
Hii mala coniectant in eum, quem terra delerent,
proditorie
perdere spectant; conspirantes
H. etenim pacem dedit illis, hiique insurrexerunt,
minacem quos ira dei
Eius spirantes mortem sunt arma preueniens in
parantes: villa de
Sic nimis ingrati mala retribuunt Circestria per
manus vulgi
bonitati,
interfectos
In caput illorum tamen est vindicta miraculose
malorum. destruxit.
Nam, qui cunctorum cognoscit
410 corda virorum,
Detegit occulta, quibus accidit vlcio multa:
Cum magis instabant subitoque nocere putabant,
Ex improuiso periunt discrimine viso.
Per loca diuersa fuit horum concio spersa,
Quos deus extinxit, nec in hoc miracula finxit;
De populo patrie, nato comitante Marie,
Quatuor elati perierunt decapitati.
Ecce dei munus! populus quasi vir foret vnus,
Surgit ad omne latus, sit vt H. ita fortificatus.
420 Quod satis est carum, conciues Londoniarum
Nobilis Henrici steterant constanter Qualiter regis
amici: nati in custodia
Rex iubet et prompti fuerant armis tunc Maioris
Londoniarum
cito compti,
pro securitate
Eius et in sortem magnam tribuere secundum
cohortem. tempus
Vrbs fuit adiutrix, que Regis tunc fidissime
quasi nutrix seruabantur.
Natos seruauit, et eos quasi mater amauit;
Regis enim camera fuit vrbs hoc tempore vera,
In qua confisus multum fuit ille gauisus:
Sic pius in Cristo pietatem sentit in isto,725
Quo preseruatur et regnum clarificatur.
430 Anglicus a sompnis quasi surgens vir canit omnis,
R. cadit, H. regnat, quo regnum gaudia
pregnat.726
Tempore quo facta sunt hec Ricardus ad acta
Non foris exiuit, qui quando Qualiter
pericula sciuit, Ricardus, cum
Quod sors falsorum destructa fuit ipse noua de
morte illorum
sociorum,
qui apud
Fortunam spreuit et eorum funera Circestriam, vt
fleuit. predictum est,
Tunc bene videbat, quod ei fraus interierunt
nulla valebat, audisset,
Quo contristatus doluit quasi morte seipsum727
grauatus: omni cibo
Ecce dolor talis suus est, quod renunciantem
pre doloris
spes aliqualis728 angustia
Amodo viuentem nequiit conuertere morientem
flentem. extinxit.
Qui tamen astabant custodes sepe
440 iuuabant,
Ne desperaret, dum tristia continuaret;
Set neque verborum solamina cepit eorum,
Dum lacrimas spersit, sibimet nec amore pepercit:
Sic se consumit, quod vix si prandia sumit,
Aut si sponte bibit vinum, quo viuere quibit;
Semper enim plorat, semper de sorte laborat,
Qua cadit, et tales memorat periisse sodales:
Solam deposcit mortem, ne viuere possit
Amplius, est et ita moriens sua pompa sopita.
450 Anglia gaudebat, quia quem plebs plus metuebat
Cristus deleuit, quo libera terra quieuit:
Set probus Henricus, pietatis semper amicus,
Ad Cristi cultum corpus dedit esse sepultum
Sollempni more, quamuis sine laudis honore.
Langele testatur quod ibi Ricardus humatur;
Ipse loco tali magis omnibus in speciali
Corpus donauit, quod mundus habere negauit.
Sic bona proque malis H. mitis et imperialis
Reddit ei mite, qui clauserat vltima vite:
460 Mortuus R. transit, viuens probus H. que remansit,
Quem deus extollit, et ab R. sua prospera tollit.
O quam pensando mores variosque notando,
Si bene scrutetur, R. ab H. distare Nota hic
videtur! secundum
Clarus sermone, tenebrosus et commune
dictum de
intus agone,
pietate
R. pacem fingit, dum mortis federa serenissimi
stringit: regis Henrici,
Duplex cautelis fuit R., pius H. que necnon de
fidelis; impietate qua
R. pestem mittit, mortem pius H. crudelissimus
que remittit; Ricardus
regnum, dum
R. seruitutem statuit, pius H. que potuit, tirannice
salutem;729 vexauit.
R. plebem taxat, taxas pius H. que
relaxat;
470 R. proceres odit et eorum predia rodit,
H. fouet, heredesque suas restaurat in edes;
R. regnum vastat vindex et in omnibus astat,
Mulset terrorem pius H., que reducit amorem.730
O deus, Henrico, quem diligo, quem benedico,
Da regnum tutum nulla grauitate volutum:
Vite presentis pariter viteque sequentis
Da sibi quodcumque felicius est ad vtrumque.

Cronica Ricardi, qui sceptra tulit


l e o p a r d i ,732
Vt patet, est dicta Hic in
populo set non exemplum
aliorum Ricardi
b e n e d i c t a :733 demerita
V t s p e c u l u m m u n d i , q u o commemorans
lux nequit vlla finaliter
480 refundi, recapitulat.731
Sic vacuus transit, sibi
nil nisi culpa remansit.
Vnde superbus erat, modo si
preconia querat,
Eius honor sordet, laus culpat,
gloria mordet.
Hoc concernentes caueant qui sunt
sapientes,
Nam male viuentes deus odit in
orbe regentes:
Est qui peccator, non esse potest dominator;
Ricardo teste, finis probat hoc
manifeste:
Post sua demerita periit sua
p o m p a s o p i t a ;734
Qualis erat vita, cronica stabit ita.

Explicit Cronica presentibus que futuris vigili corde Regibus735


commemoranda.

FOOTNOTES:
704 Heading 3 Derbei H
705 Heading 18 maiestatis CH₃
706 69 affimare C
707 95 abhortum CH
708 109 pius] CHGH₃ prius S
709 131 miles CHH₃ viles S
710 145 quasi] sua H
711 172 Scrōp SCH Buscy G
712 188 sceleres SHGH₃ celeres C (corr.)
713 197 fata C
714 219 protunc CH₃
715 239 tunc CGH₃ nunc SH
716 258 Arundeƚƚ MSS.
717 291 quibus SG et ad CHH₃
718 309 margin continuatum fuit CH fuit continuatum H₃
719 318 margin magestatis CHH₃
720 323 sacratus C
721 340 regnant C
722 347 recisum CH₃
723 369 iure SG labe CHH₃
724 404 malefecit C
725 428 pius CHH₃ prius SG
726 431 pregnant C
727 436 margin se ipsum CH
728 438 suus CHH₃ suis SG
729 468 line om. C
730 473 Mulcet GH₃
731 479 ff. margin Text SG Hic in fine cronicam Regis Ricardi
secundum sua demerita breuiter determinet CH Hic
determinatur de demeritis Regis Ricardi H₃
732 478-483 As follows in G,

O speculum mundi, quod debet in ante


refundi,
Ex quo prouisum sapiens acuat sibi visum,
Cronica Ricardi, q u i r e g n a t u l i t
l e o p a r d i, 480*
Vt patet, est dicta, populo sed
n o n b e n e d i c t a.
Quicquid erat primo, modo cum sors fertur in
ymo,
Eius honor sordet, laus culpat, gloria mordet.

733 479 populo set non benedicta SC violenta grauis maledicta


HH₃
734 488 f.

Sic diffinita stat regia sors stabilita;


Regis vt est vita, cronica stabit ita. G

735 Explicit. 2 Regibus SG iugiter CHH₃


REX CELI DEUS etc.

Sequitur carmen vnde magnificus Rex


noster Henricus prenotatus apud deum et
homines cum omni benediccione glorificetur.

736Rex celi deus et dominus, qui tempora solus


Condidit, et solus condita cuncta regit,
Qui rerum causas ex se produxit, et vnum
In se principium rebus inesse dedit,
Qui dedit vt stabili motu consisteret orbis,
Fixus ineternum mobilitate sua,
Quique potens verbi produxit ad esse creata,
Quique sue mentis lege ligauit ea,
Ipse caput regum, reges quo rectificantur,
10 Te que tuum regnum, Rex pie, queso regat.
Grata superueniens te misit gracia nobis,
O sine labe salus nulla per ante fuit:737
Sic tuus aduentus noua gaudia sponte reduxit,
Quo prius in luctu lacrima maior erat.
Nos tua milicia pauidos releuauit ab ymo,738
Quos prius oppressit ponderis omne malum:
Ex probitate tua, quo mors latitabat in vmbra,
Vita resurrexit clara que regna regit:
Sic tua sors sortem mediante deo renouatam
20 Sanat et emendat, que prius egra fuit.
O pie rex, Cristum per te laudamus, et ipsum
Qui tibi nos tribuit terra reviua colit:
Sancta sit illa dies, qua tu tibi regna petisti,
Sanctus et ille deus, qui tibi regna dedit!
Qui tibi prima tulit, confirmet regna futura,
Quo poteris magno magnus honore frui:
Sit tibi progenies ita multiplicata per euum,
Quod genus inde pium repleat omne solum:
Quicquid in orbe boni fuerit, tibi summus ab alto
30 Donet, vt in terris rex in honore regas:
Omne quod est turpe vacuum discedat, et omne
Est quod honorificum det deus esse tuum.
Consilium nullum, pie rex, te tangat iniqum,
In quibus occultum scit deus esse dolum:
Absit auaricia, ne tangat regia corda,
Nec queat in terra proditor esse tua:
Sic tua processus habeat fortuna perhennes,
Quo recolant laudes secula cuncta tuas;
Nuper vt Augusti fuerant preconia Rome,
40 Concinat in gestis Anglia leta tuis.
O tibi, rex, euo detur, fortissime, nostro
Semper honorata sceptra tenere manu:
Stes ita magnanimus, quod vbi tua regna
gubernas,
Terreat has partes hostica nulla manus:
Augeat Imperium tibi Cristus et augeat annos,
Protegat et nostras aucta corona fores:
Sit tibi pax finis, domito domineris in orbe,
Cunctaque sint humeris inferiora tuis:
Sic honor et virtus, laus, gloria, pax que potestas
50 Te que tuum regnum magnificare queant.
Cordis amore tibi, pie Rex, mea vota paraui,739
Est qui seruicii nil nisi velle mihi:740
Ergo tue laudi que tuo genuflexus honori
Verba loco doni pauper habenda tuli.
Est tamen ista mei, pie rex, sentencia verbi,
Fine tui regni sint tibi regna poli!

FOOTNOTES:
736 Rex celi, &c. The MSS. referred to for this and the two
succeeding pieces are SCHGH₃ and (for this piece and the
next) the Trentham MS. (T).
737 12 Quo T
738 15 milicia S (corr.) milicies CHH₃T
739 51 tibi] boni T
740 52 Corpore cum nequii seruio mente tibi T
Prophecia. H. aquile pullus, quo nunquam gracior vllus,
Hostes confregit, que tirannica colla741 subegit.
H. aquile cepit oleum, quo regna recepit,
Sic veteri iuncta stipiti noua stirps redit vncta.

FOOTNOTES:
741 Prophecia. 2 colla CHH₃T bella S
O RECOLENDE etc.

Epistola breuis, vnde virtutes regie morales


ad sanum regimen ampliori memoria
dirigantur.742

O r e c o l e n d e, bone, pie rex, Henrice,


patrone,
Ad bona dispone quos eripis a Pharaone:
Noxia depone, quibus est humus hec in agone,
Regni persone quo viuant sub racione.743
Pacem compone, vires moderare corone,
Legibus impone frenum sine condicione,
Firmaque sermone iura tenere mone.
Rex confirmatus, licet vndique magnificatus,
Sub Cristo gratus viuas tamen inmaculatus.
10 Est tibi prelatus, comes et baro, villa, Senatus,
Miles et armatus sub lege tua moderatus:744
Dirige quosque status, maneas quo pacificatus;
Inuidus, elatus nec auarus erit sociatus;
Sic eris ornatus, purus ad omne latus.
Hec, vt amans quibit, Gower, pie Rex, tibi scribit:
Quo pietas ibit, ibi gracia nulla peribit:
Qui bene describit semet, mala
n u l l a s u b i b i t ,745
Set pius exibit, que dei pietate
r e d i b i t :746
Sic qui transibit opus et pietatis
adibit,
Hunc deus ascribit, quod ab hoste
20 perire nequibit;
E t s i c f i n i b i t q u i p i a v o t a b i b i t .747
Quanto regalis honor est tibi plus
generalis748
Ta n t o moralis virtus tibi sit specialis:749
Sit tibi carnalis in mundo regula, qualis
Est tibi mentalis in Cristo spiritualis.750
Si fueris talis, tua Cronica perpetualis
Tunc erit equalis perfectaque materialis:
Rex inmortalis te regat absque malis!

FOOTNOTES:
742 O recolende, &c. Title Epistola—dirigantur om. GH₃
743 4 margin Nota de iusticia C
744 11 margin Nota de regimine C
745 17-21 Over erasure in SCG, as follows in HH₃,

Dum pia vota bibit, tua fama sitire nequibit,


Plena set exibit, cum laudeque plena redibit:
Non sic transibit, vbicumque tirannus abibit;
Cum nimis ascribit sibi magna, minora subibit;
Vt meritum querit, sors sua fata gerit.

746 18 margin Nota de pietate C


747 21 pia] pita S
748 22 Vt tibi regalis, pie rex, honor est generalis HH₃
749 23 Sic rogo HH₃
750 25 margin Nota de contemplacione C
CARMEN SUPER MULTIPLICI
VICIORUM PESTILENCIA751
752Nota consequenter753 carmen super
multiplici viciorum pestilencia, vnde tempore
Ricardi Secundi partes nostre specialius
inficiebantur.

Non excusatur qui verum non fateatur,


Vt sic ponatur modus, vnde fides recolatur:
Qui magis ornatur sensu, sua verba loquatur,
Ne lex frangatur, qua Cristus sanctificatur.
Hoc res testatur, virtus ita nunc viciatur,
Quod vix firmatur aliquis quin transgrediatur:
Hinc contristatur mea mens, que sepe grauatur,
Dum contemplatur vicium quod continuatur;
Set quia speratur quod vera fides operatur,
10 Quod deus hortatur, michi scribere penna paratur,
Vt describatur cur mundus sic variatur:
Ecce malignatur que modo causa datur.

754Putruerunt et corrupte sunt cicatrices a


facie insipiencie, set priusquam mors ex morbo
finem repente concludat, sapiencie medicinam
detectis plagis cum omni diligencia sapienter
investigare debemus. Vnde ego, non medicus
set medicine procurator, qui tanti periculi
grauitatem deplangens intime contristor,
quedam vulnera maiori corrupcione putrida
euidenti distinccione, vt inde medicos pro
salute interpellam,755 consequenter declarare
propono. Anno756 regni Regis Ricardi Secundi
vicesimo.
Contra demonis astuciam in causa Lollardie.

Quod patet ad limen instanti tempore crimen757


Describam primo, quo pallent alta sub ymo.
Nescio quid signat, plebs celica iura resignat,
Dum laicus clausas fidei vult soluere causas,
Que deus incepit et homo seruanda recepit:
Iam magis eneruant populi quam scripta
reseruant,
Vnde magis clarum scribere tendo parum.
Lollia messis habens granum perturbat et
20 ipsum,
Talia qui patitur horrea sepe grauat:
Semina perfidie sacros dispersa per agros
Ecclesie turbant subdola sicque fidem.
Inuentor sceleris sceleratus apostata primus
Angelicas turmas polluit ipse prius;
Postque ruit nostros paradisi sede parentes,
Morteque vitales fecerat esse reos:
Callidus hic serpens nec adhuc desistit in orbe,
Quin magis in Cristi lollia messe serit.
30 Ecce nouam sectam, mittit que plebis in aures,
Ad fidei dampnum scandala plura canit:
Sic vetus insurgit heresis quasi Iouiniani,
Vnde moderna fides commaculata dolet:
Vsurpando fidem vultum mentitur honestum,
Caucius vt fraudem palliet inde suam:758
Sub grossa lana linum subtile tenetur,
Simplicitas vultus corda dolosa tegit.
Fermento veteri talis corrumpit aceruum,
Qui noua conspergit et dubitanda mouet:
40 Dum magis incantat, obtura tu magis aures,
Forcius et cordis ostia claude tui:
Simplicitate tua ne credas omne quod audis;
Que docet ambiguus auctor aborta caue:
Nil nouitatis habens tua mens fantastica cedat;
Vt pater ante tuus credidit, acta cole.
Vera fides Cristi non hesitat, immo fideles
Efficit vt credant cordis amore sui:
Nil valet illa fides vbi res dabit experimentum,
Spes tamen in Cristo sola requirit eum:
50 Recta fides quicquid rectum petit, omne meretur,
Quicquid possibile creditur, ipsa potest.
Argumenta fides dat rerum que neque sciri,
Nec possunt verbo nec racione capi:
Subde tuam fidei mentem, quia mortis ymago
Iudicis eterni mistica scire nequit:
Vt solus facere voluit, sic scire volebat
Solus, et hoc nulli participauit opus.
Vna quid ad solem sintilla valet, vel ad equor759
Gutta, vel ad celum quid cinis esse potest?
60 Leticiam luctus, mors vitam, gaudia fletus
Non norunt, nec que sunt deitatis homo:
Non tenebre solem capiunt, non lumina cecus,760
Infima mens hominis nec capit alta dei:761
Nempe sacri flatus archanum nobile nunquam
Scrutari debes, quod penetrare nequis.
Cum non sit nostrum vel mundi tempora nosse,
Vnde creaturas nosse laborat homo?
Nos sentire fidem nostra racione probatam
Non foret humanis viribus illud opus;
70 Humanum non est opus vt transcendat ad astra,
Quod mortalis homo non racione capit:
Ingenium tante transit virtutis in altum,
Transcurrit superos, in deitate manet.
Qui sapienter agit, sapiat moderanter in istis,
Postulet vt rectam possit habere fidem:
Committat fidei quod non poterit racioni,
Quod non dat racio, det tibi firma fides.
Quod docet ecclesia tu tantum crede, nec vltra
Quam tibi scire datur quomodocumque stude:
80 Sufficit vt credas, est ars vbi nulla sciendi,
Quanta potest dominus scire nec vllus habet.
Est deus omnipotens, et qui negat omnipotenti
Credere posse, suum denegat esse deum;
Sic incarnatum tu debes credere Cristum
Virginis ex vtero, qui deus est et homo.
Vis saluus fieri? p e t e, crede, s t u d e
reuereri;762
Absque magis queri lex iubet ista geri.
H a s fantasias aliter q u e dant heresias763
Dampnat Messias, sobrius ergo scias.
90 Tempore Ricardi, super hiis que fata tulerunt,764
Scismata lollardi de nouitate serunt:
Obstet principiis tribulos purgareque vadat
Cultor in ecclesiis, ne rosa forte cadat.

Contra mentis Seuiciam in causa Superbie.

Deficit in verbo sensus, quo cuncta superbo


Scribere delicta nequeo, que sunt michi dicta.
Radix peccati fuit ille prius scelerati,
Ex quo dampnati perierunt preuaricati:
Desuper a celis deiecit eum Michaelis
Ensis ad inferni tenebras de luce superni;
100 Nec paradisus ei prebere locum requiei
Spondet, vbi vere sibi gaudia posset habere:
Sic, quia deceptus alibi nequit esse receptus,
Mundum deposcit, vt in illo viuere possit:
Sic adhibendo moram venit ille superbus ad
horam,
Quem mea mens tristis in partibus asserit istis.
Hunc vbi ponemus, hostem quem semper
habemus?
Nam magis infecta veniens facit omnia tecta.
Laus ibi non lucet, vbi vana superbia ducet
Regna superborum; docet hoc vestitus eorum:
110 Cum valet ornatum sibi vanus habere paratum,
Non quasi mortalis, set vt angelus euolat alis.
Militis ad formam modo pauper habet sibi normam,
Vana sit vt vestis erit inde superbia testis,
Exterius signum cor signat habere malignum,
Cordis et errore fortuna carebit honore.
Nos igitur talem non consociare sodalem
Expedit, vt tuti reddamur in orbe saluti.
Quod deus odiuit reprobos Dauid hoc bene sciuit,
Ipseque psalmista scripsit de talibus ista:
120 ‘Elatas mentes posuit de sede potentes,
Et sublimauit humiles, quos semper amauit.’
Vanus non durat, quem vana superbia curat,
Hec set eum ducit vbi gracia nulla reducit;
Culpa quidem fontis latices dabit hec Acherontis,
Vnde bibunt vani mortem quasi cotidiani.
Omne quod est natum stat ab hoc vicio
viciatum,765
Quo magis inmundum vir vanus habet sibi
mundum;
Set qui mentali de pondere iudiciali
Istud libraret, puto quod meliora pararet.
130 Hoc nam mortale vicium stat sic generale,
Quod mundum fregit, vbi singula regna subegit;
Hec etenim cedes nostras, vt dicitur, edes
Vertit, et insana dat tempora cotidiana.
O deus eterne, culpe miserere moderne,
Facque pias mentes sub lege tua penitentes!
Corpus, opes, vires sapiens non sic stabilires,
Dumque superbires, subita quin sorte perires:
Sunt que maiores humilis paciencia mores766
Nutrit, et errores vicii facit esse minores:
140 Ergo tuam vera mentem moderare statera;
Sit laus vel labes, pectore pondus habes.

Contra carnis lasciuiam in causa Concupiscencie.


O sexus fragilis, ex quo natura virilis
Carnea procedit, anime que robora ledit!767
O natura viri carnalis, que stabiliri
Non valet, vt pura carnalia sint sibi iura!
Federa sponsorum que sunt sacrata virorum,
Heu, caro dissoluit, nec ibi sua debita soluit:
Tempore presenti de carne quasi furienti
Turpia sunt plura, que signant dampna futura:
150 Hec desponsatis sunt metuenda satis.
Philosophus quidam carnis de labe remorsus
Plebis in exemplum talia verba refert:
‘Vnam de variis penam sortitur adulter,
Eius vt amplexus omnis in orbe luat;768
Aut membrum perdet, aut carceris antra subibit,
Aut cadet insanus non reputandus homo,
Aut sibi pauperies infortunata resistet,
Aut moriens subito transit ab orbe reus.’
Et sic luxuries fatuis sua dona refundit,769
160 Vertit et econtra quicquid ab ante tulit.
Quod prius est dulce, demonstrat finis amarum,
Quo caro non tantum, spiritus immo cadit:
Sic oculus cordis carnis caligine cecus
Errat, et in dampnum decidit ipse suum:
Sic iubar humani sensus fuscatur in vmbra
Carnis, et in carnem mens racionis abit.
Dum carnalis amor animum tenet illaqueatum,
Sensati racio fit racionis egens;
Stans hominis racio calcata per omnia carni
170 Seruit, et ancille vix tenet ipsa locum.
Non locus est in quo maneant consueta libido
Et racio pariter, quin magis vna vacat:
Bella libido mouet, fauet et vecordia carnis,
Et sua dat fedo colla premenda iugo;
Libera set racio mentem de morte remordet
Carnis in obsequio, statque pudica deo.
Nil commune gerunt luxus sibi cum racione;
Ista deum retinet, illa cadauer habet:
Sic patet vt nichil est quicquid peritura voluptas
180 Appetit in carne, que velut vmbra fugit.
Pluribus exemplis tibi luxus erit fugiendus;
Biblea que docuit, respice facta Dauid:
Consilio Balaam luxus decepit Hebreos,
Quos caro commaculat, carnea culpa premit.
Discat homo iuuenis, celeri pede labitur etas,
Nuncia dum mortis curua senecta venit:
Ecce senilis yemps tremulo venit horrida passu,
Et rapit a iuvene quod reparare nequit:
Vir sapiens igitur sua tempora mente reuoluat,
190 Erigat et currum, quam prius inde cadat.770
Heu, set in hoc vicio plebis quasi tota propago
Carnis in obsequio stat viciata modo:
Ex causa fragili causatur fictilis etas,
Quo nunc de facili frangitur omnis homo.
Carnis enim vicia sunt sic communiter acta,
Quod de continuis vix pudet vsus eis:
Cecus amor fatuos cecos sic ducit amantes,
Quod sibi quid deceat non videt vllus amans.
Pendula res amor est subito collapsa dolore,
200 Ordine precipiti miraque facta parat;771
Sique tuam velles flammam compescere tutus,
Artem preuideas, quam prius inde cadas.
Cum viciis aliis pugna, iubet hec tibi Paulus,772
Carnis et a bello tu fuge solus homo;
Et quia vulnifico fixurus pectora telo
Vibrat amor, caute longius inde fuge:
Vinces si fugias, vinceris sique resistas;
Ne leo vincaris, tu lepus ergo fuge.
Mente tui cordis memorare nouissima carnis,
210 Et speculo mortis respice qualis eris:773
Oscula fetor erunt, amplexus vermis, et omne
Quod fuerat placidum, pena resoluet opus.
Occupat extrema stultorum gaudia luctus,
Et risum lacrima plena dolore madet:
Vana salus hominis, quam terminat egra voluptas,
Tollit et eternum viuere vita breuis.
Crede, satis tutum tenet hoc natura statutum,774
Quo caro pollutum reddet ad yma lutum;
Cum fera mors stabit et terram terra vorabit,
220 Tunc homo gustabit quid sibi culpa dabit.
Est vbi mundicia carnis sine labe reatus,
Casta pudicicia gaudet ad omne latus:
Stat nota bina solo quo luxus non dominatur,
Pax manet absque dolo, longaque vita datur.

Contra mundi fallaciam in causa Periurii et Auaricie.

Sunt duo cognati viciorum consociati,


Orbem qui ledunt pariter, nec ab orbe recedunt:
Iste fidem raram periurat, et alter auaram
Causam custodit; socios tales deus odit.
Primo periurum describam, postque futurum,
230 Est vbi ius rarum, scriptura remordet auaram:
Ex vicio tali fertur origo mali.
Nemo dei nomen assumere debet inane,
Falsa nec vt iuret, os perhibere malo:
Lex vetus hoc statuit, set, prothdolor, ecce
modernus775
Munere corruptos iam nouus error agit.
Nil nisi dona videt dum se periurat Auarus,
Eius enim sensum census vbique regit;
Sic non liber homo librum sine pondere librat,
Seruit et ad libras quas sua libra trahit.
240 Set quia periurus defraudat iura superni,
Iurat eum dominus iure perire suo:
Sic lucrum siciens laqueos incurrit, et eius
Lingua prius mendax premia mortis habet;
Sic vendens et emens vacuus non transiet, immo
Munera que capiet sulphur et ignis erunt.
Vendere iusticiam nichil est nisi vendere Cristum,

You might also like