Class PGraphicsOpenGL
- All Implemented Interfaces:
Cloneable
,PConstants
- Direct Known Subclasses:
PGraphics2D
,PGraphics3D
-
Field Summary
Modifier and TypeFieldDescriptionstatic boolean
static boolean
static boolean
float
Aspect ratio of camera's view.float
Distance of the near and far planes.float
Camera field of view.float
Distance of the near and far planes.float
Default position of the camera.float
Default position of the camera.float
Default position of the camera.float
Current light fallofffloat
float
float[]
Current specular color for lightingThe renderer currently in use.float
float
float
Default camera properties.float
float
float
float
static int
static boolean
static boolean
static String
boolean
Whether the PGraphics object is ready to render or not.float[]
Ambient colors for lights.int
float[]
Diffuse colors for lights.float[]
Light fallofffloat[]
Light direction (normalized vector)float[]
Light positionsboolean
float[]
Specular colors for lights.float[]
Light spot parameters: Cosine of light spot angle and concentrationint[]
Light typesstatic float
static int
static int
Some hardware limitsstatic boolean
Extensions used by Processingstatic String
static String
static String
OpenGL information stringsstatic String
static boolean
Interface between Processing and OpenGLstatic boolean
static int
Fields inherited from class processing.core.PGraphics
A, AB, AG, ambientB, ambientColor, ambientG, ambientR, AR, B, backgroundColor, BEEN_LIT, bezierDetail, colorMode, colorModeA, colorModeX, colorModeY, colorModeZ, curveDetail, curveTightness, DA, DB, DEFAULT_VERTICES, DG, DR, EB, edge, EDGE, EG, ellipseMode, emissiveB, emissiveColor, emissiveG, emissiveR, ER, fill, fillColor, G, HAS_NORMAL, image, imageMode, normalX, normalY, normalZ, NX, NY, NZ, pixelCount, R, rectMode, SA, SB, setAmbient, SG, shapeMode, SHINE, shininess, smooth, SPB, specularB, specularColor, specularG, specularR, SPG, sphereDetailU, sphereDetailV, SPR, SR, stroke, strokeCap, strokeColor, strokeJoin, strokeWeight, SW, textAlign, textAlignY, textFont, textLeading, textMode, textSize, textureImage, textureMode, textureU, textureV, tint, tintColor, TX, TY, TZ, U, V, VERTEX_FIELD_COUNT, VW, VX, VY, VZ
Fields inherited from class processing.core.PImage
ALPHA_MASK, BLUE_MASK, format, GREEN_MASK, height, loaded, parent, pixelDensity, pixelHeight, pixels, pixelWidth, RED_MASK, width
Fields inherited from interface processing.core.PConstants
ADD, ALPHA, ALT, AMBIENT, ARC, ARGB, ARROW, BACKSPACE, BASELINE, BEVEL, BEZIER_VERTEX, BLEND, BLUR, BOTTOM, BOX, BREAK, BURN, CENTER, CHATTER, CHORD, CLAMP, CLOSE, CODED, COMPLAINT, CONTROL, CORNER, CORNERS, CROSS, CURVE_VERTEX, CUSTOM, DARKEST, DEG_TO_RAD, DELETE, DIAMETER, DIFFERENCE, DILATE, DIRECTIONAL, DISABLE_ASYNC_SAVEFRAME, DISABLE_BUFFER_READING, DISABLE_DEPTH_MASK, DISABLE_DEPTH_SORT, DISABLE_DEPTH_TEST, DISABLE_KEY_REPEAT, DISABLE_NATIVE_FONTS, DISABLE_OPENGL_ERRORS, DISABLE_OPTIMIZED_STROKE, DISABLE_STROKE_PERSPECTIVE, DISABLE_STROKE_PURE, DISABLE_TEXTURE_MIPMAPS, DODGE, DOWN, DXF, ELLIPSE, ENABLE_ASYNC_SAVEFRAME, ENABLE_BUFFER_READING, ENABLE_DEPTH_MASK, ENABLE_DEPTH_SORT, ENABLE_DEPTH_TEST, ENABLE_KEY_REPEAT, ENABLE_NATIVE_FONTS, ENABLE_OPENGL_ERRORS, ENABLE_OPTIMIZED_STROKE, ENABLE_STROKE_PERSPECTIVE, ENABLE_STROKE_PURE, ENABLE_TEXTURE_MIPMAPS, ENTER, EPSILON, ERODE, ESC, EXCLUSION, FX2D, GIF, GRAY, GROUP, HALF_PI, HAND, HARD_LIGHT, HINT_COUNT, HSB, IMAGE, INVERT, JAVA2D, JPEG, LANDSCAPE, LEFT, LIGHTEST, LINE, LINE_LOOP, LINE_STRIP, LINES, LINUX, MACOS, MACOSX, MAX_FLOAT, MAX_INT, MIN_FLOAT, MIN_INT, MITER, MODEL, MODELVIEW, MOVE, MULTIPLY, NORMAL, OPAQUE, OPEN, OPENGL, ORTHOGRAPHIC, OTHER, OVERLAY, P2D, P3D, PATH, PDF, PERSPECTIVE, PI, PIE, platformNames, POINT, POINTS, POLYGON, PORTRAIT, POSTERIZE, PROBLEM, PROJECT, PROJECTION, QUAD, QUAD_BEZIER_VERTEX, QUAD_STRIP, QUADRATIC_VERTEX, QUADS, QUARTER_PI, RAD_TO_DEG, RADIUS, RECT, REPEAT, REPLACE, RETURN, RGB, RIGHT, ROUND, SCREEN, SHAPE, SHIFT, SOFT_LIGHT, SPAN, SPHERE, SPOT, SQUARE, SUBTRACT, SVG, TAB, TARGA, TAU, TEXT, THIRD_PI, THRESHOLD, TIFF, TOP, TRIANGLE, TRIANGLE_FAN, TRIANGLE_STRIP, TRIANGLES, TWO_PI, UP, VERTEX, WAIT, WHITESPACE, WINDOWS, X, Y, Z
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
ambientLight
(float r, float g, float b) Add an ambient light based on the current color mode.void
ambientLight
(float r, float g, float b, float x, float y, float z) Add an ambient light based on the current color mode.void
applyMatrix
(float n00, float n01, float n02, float n10, float n11, float n12) void
applyMatrix
(float n00, float n01, float n02, float n03, float n10, float n11, float n12, float n13, float n20, float n21, float n22, float n23, float n30, float n31, float n32, float n33) Apply a 4x4 transformation matrix to the modelview stack.void
applyMatrix
(PMatrix2D source) void
applyMatrix
(PMatrix3D source) void
applyProjection
(float n00, float n01, float n02, float n03, float n10, float n11, float n12, float n13, float n20, float n21, float n22, float n23, float n30, float n31, float n32, float n33) void
applyProjection
(PMatrix3D mat) void
void
void
void
attribColor
(String name, int color) void
attribNormal
(String name, float nx, float ny, float nz) void
attribPosition
(String name, float x, float y, float z) void
Set matrix mode to the camera matrix (instead of the current transformation matrix).void
Use the beginContour() and endContour() function to create negative shapes within shapes such as the center of the letter "O".void
Sets the default properties for a PGraphics object.beginPGL()
void
beginShape
(int kind) Using the beginShape() and endShape() functions allow creating more complex forms.void
bezierVertex
(float x2, float y2, float x3, float y3, float x4, float y4) void
bezierVertex
(float x2, float y2, float z2, float x3, float y3, float z3, float x4, float y4, float z4) Specifies vertex coordinates for Bézier curves.void
box
(float w, float h, float d) void
camera()
Set camera to the default settings.void
camera
(float eyeX, float eyeY, float eyeZ, float centerX, float centerY, float centerZ, float upX, float upY, float upZ) More flexible method for dealing with camera().void
copy
(int sx, int sy, int sw, int sh, int dx, int dy, int dw, int dh) Copies a region of pixels from one image into another.void
void
curveVertex
(float x, float y) Specifies vertex coordinates for curves.void
curveVertex
(float x, float y, float z) void
directionalLight
(float r, float g, float b, float dx, float dy, float dz) Adds a directional light.void
dispose()
Handle any shutdown for this graphics context.void
ellipseImpl
(float a, float b, float c, float d) void
Record the current settings into the camera matrix, and set the matrix mode back to the current transformation matrix.void
Use the beginContour() and endContour() function to create negative shapes within shapes such as the center of the letter "O".void
endDraw()
Finalizes the rendering of a PGraphics object so that it can be shown on screen.void
endPGL()
void
endShape
(int mode) The endShape() function is the companion to beginShape() and may only be called after beginShape().void
filter
(int kind) This is really inefficient and not a good idea in OpenGL.void
filter
(int kind, float param) This is really inefficient and not a good idea in OpenGL.void
void
flush()
void
frustum
(float left, float right, float bottom, float top, float znear, float zfar) Same as glFrustum(), except that it wipes out (rather than multiplies against) the current perspective matrix.int
get
(int x, int y) Reads the color of any pixel or grabs a section of an image.Get cache storage data for the specified renderer.Not an approved function, test its use in libraries to grab the FB objects for offscreen PGraphics.getFrameBuffer
(boolean multi) Copy the current transformation matrix into the specified target.Not an approved function, this will change or be removed in the future.getTexture
(boolean load) Not an approved function either, don't use it.getTexture
(PImage img) Not an approved function, this will change or be removed in the future.void
hint
(int which) Set various hints and hacks for the renderer.boolean
isGL()
Return true if this renderer uses OpenGL.void
lightFalloff
(float constant, float linear, float quadratic) Set the light falloff rates for the last light that was created.void
lights()
Sets up an ambient and directional light using OpenGL.void
lightSpecular
(float x, float y, float z) Set the specular color of the last light created.void
line
(float x1, float y1, float x2, float y2) Draws a line (a direct path between two points) to the screen.void
line
(float x1, float y1, float z1, float x2, float y2, float z2) void
Loads the pixel data of the current display window into the pixels[] array.loadShader
(String fragFilename) Loads a shader into the PShader object.loadShader
(String fragFilename, String vertFilename) Loads geometry into a variable of type PShape.void
void
Masks part of an image from displaying by loading another image and using it as an alpha channel.float
modelX
(float x, float y, float z) Returns the three-dimensional X, Y, Z position in model space.float
modelY
(float x, float y, float z) Returns the three-dimensional X, Y, Z position in model space.float
modelZ
(float x, float y, float z) Returns the three-dimensional X, Y, Z position in model space.void
noClip()
Disables the clipping previously started by the clip() function.void
noLights()
Disables lighting.void
ortho()
Calls ortho() with the proper parameters for Processing's standard orthographic projection.void
ortho
(float left, float right, float bottom, float top) Calls ortho() with the specified size of the viewing volume along the X and Z directions.void
ortho
(float left, float right, float bottom, float top, float near, float far) Sets an orthographic projection.void
Calls perspective() with Processing's standard coordinate projection.void
perspective
(float fov, float aspect, float zNear, float zFar) Similar to gluPerspective().void
point
(float x, float y) Draws a point, a coordinate in space at the dimension of one pixel.void
point
(float x, float y, float z) void
pointLight
(float r, float g, float b, float x, float y, float z) Adds a point light.void
Pops the current transformation matrix off the matrix stack.void
void
popStyle()
The pushStyle() function saves the current style settings and popStyle() restores the prior settings; these functions are always used together.void
Print the current camera matrix.void
Print the current model (or "transformation") matrix.void
Print the current projection matrix.void
Pushes the current transformation matrix onto the matrix stack.void
void
quad
(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4) A quad is a quadrilateral, a four sided polygon.void
quadraticVertex
(float cx, float cy, float x3, float y3) Specifies vertex coordinates for quadratic Bézier curves.void
quadraticVertex
(float cx, float cy, float cz, float x3, float y3, float z3) void
removeCache
(PImage image) Remove information associated with this renderer from the cache, if any.void
Replaces the current matrix with the identity matrix.void
void
Restores the default shaders.void
resetShader
(int kind) void
resize
(int wide, int high) Resize the image to a new width and height.void
rotate
(float angle) Two dimensional rotation.void
rotate
(float angle, float v0, float v1, float v2) Rotate around an arbitrary vector, similar to glRotate(), except that it takes radians (instead of degrees).void
rotateX
(float angle) Rotates a shape around the x-axis the amount specified by the angle parameter.void
rotateY
(float angle) Rotates a shape around the y-axis the amount specified by the angle parameter.void
rotateZ
(float angle) Rotates a shape around the z-axis the amount specified by the angle parameter.boolean
void
scale
(float s) Same as scale(s, s, s).void
scale
(float sx, float sy) Same as scale(sx, sy, 1).void
scale
(float sx, float sy, float sz) Scale in three dimensions.float
screenX
(float x, float y) Takes a three-dimensional X, Y, Z position and returns the X value for where it will appear on a (two-dimensional) screen.float
screenX
(float x, float y, float z) float
screenY
(float x, float y) Takes a three-dimensional X, Y, Z position and returns the Y value for where it will appear on a (two-dimensional) screen.float
screenY
(float x, float y, float z) float
screenZ
(float x, float y, float z) Takes a three-dimensional X, Y, Z position and returns the Z value for where it will appear on a (two-dimensional) screen.void
set
(int x, int y, int argb) Changes the color of any pixel or writes an image directly into the display window.
The x and y parameters specify the pixel to change and the color parameter specifies the color value.void
Store data of some kind for the renderer that requires extra metadata of some kind.void
Set the current transformation to the contents of the specified source.void
Set the current transformation to the contents of the specified source.void
void
setPrimary
(boolean primary) Set (or unset) this as the main drawing surface.void
setProjection
(PMatrix3D mat) void
setSize
(int iwidth, int iheight) The final step in setting up a renderer, set its size of this renderer.void
Applies the shader specified by the parameters.void
void
shearX
(float angle) Shears a shape around the x-axis the amount specified by the angle parameter.void
shearY
(float angle) Shears a shape around the y-axis the amount specified by the angle parameter.void
sphere
(float r) A sphere is a hollow ball made from tessellated triangles.void
spotLight
(float r, float g, float b, float x, float y, float z, float dx, float dy, float dz, float angle, float concentration) Adds a spotlight.void
strokeCap
(int cap) Sets the style for rendering line endings.void
strokeJoin
(int join) Sets the style of the joints which connect line segments.void
strokeWeight
(float weight) Sets the width of the stroke used for lines, points, and the border around shapes.void
textureSampling
(int sampling) void
textureWrap
(int wrap) Defines if textures repeat or draw once within a texture map.void
translate
(float tx, float ty) Specifies an amount to displace objects within the display window.void
translate
(float tx, float ty, float tz) void
triangle
(float x1, float y1, float x2, float y2, float x3, float y3) A triangle is a plane created by connecting three points.void
void
void
void
updateTexture
(int x, int y, int w, int h) void
vertex
(float x, float y) void
vertex
(float x, float y, float z) void
vertex
(float x, float y, float u, float v) void
vertex
(float x, float y, float z, float u, float v) All shapes are constructed by connecting a series of vertices.Methods inherited from class processing.core.PGraphics
alpha, ambient, ambient, ambient, applyMatrix, arc, arc, background, background, background, background, background, background, background, beginRaw, beginShape, bezier, bezier, bezierDetail, bezierPoint, bezierTangent, blendMode, blue, box, brightness, circle, clear, clip, color, color, color, color, color, color, color, color, color, colorMode, colorMode, colorMode, colorMode, createShape, createShape, createShape, curve, curve, curveDetail, curvePoint, curveTangent, curveTightness, displayable, edge, ellipse, ellipseMode, emissive, emissive, emissive, endRaw, endShape, fill, fill, fill, fill, fill, fill, getMatrix, getRaw, getStyle, getStyle, green, haveRaw, hue, image, image, image, imageMode, is2D, is2X, is3D, lerpColor, lerpColor, loadShape, noFill, normal, noSmooth, noStroke, noTexture, noTint, pop, push, pushStyle, rect, rect, rect, rectMode, red, saturation, save, setMatrix, setPath, shape, shape, shape, shapeMode, shininess, showDepthWarning, showDepthWarningXYZ, showException, showMethodWarning, showMissingWarning, showVariationWarning, showWarning, showWarning, smooth, smooth, specular, specular, specular, sphereDetail, sphereDetail, square, stroke, stroke, stroke, stroke, stroke, stroke, style, text, text, text, text, text, text, text, text, text, text, text, textAlign, textAlign, textAscent, textDescent, textFont, textFont, textLeading, textMode, textSize, texture, textureMode, textWidth, textWidth, textWidth, tint, tint, tint, tint, tint, tint, vertex
Methods inherited from class processing.core.PImage
blend, blend, blendColor, checkAlpha, clone, copy, get, get, getImage, getModifiedX1, getModifiedX2, getModifiedY1, getModifiedY2, getNative, init, init, isLoaded, isModified, loadTGA, mask, set, setLoaded, setLoaded, setModified, setModified, updatePixels, updatePixels
-
Field Details
-
pgl
Interface between Processing and OpenGL -
currentPG
The renderer currently in use. -
initialized
public boolean initializedWhether the PGraphics object is ready to render or not. -
npotTexSupported
public static boolean npotTexSupportedExtensions used by Processing -
autoMipmapGenSupported
public static boolean autoMipmapGenSupported -
fboMultisampleSupported
public static boolean fboMultisampleSupported -
packedDepthStencilSupported
public static boolean packedDepthStencilSupported -
anisoSamplingSupported
public static boolean anisoSamplingSupported -
blendEqSupported
public static boolean blendEqSupported -
readBufferSupported
public static boolean readBufferSupported -
drawBufferSupported
public static boolean drawBufferSupported -
maxTextureSize
public static int maxTextureSizeSome hardware limits -
maxSamples
public static int maxSamples -
maxAnisoAmount
public static float maxAnisoAmount -
depthBits
public static int depthBits -
stencilBits
public static int stencilBits -
OPENGL_VENDOR
OpenGL information strings -
OPENGL_RENDERER
-
OPENGL_VERSION
-
OPENGL_EXTENSIONS
-
GLSL_VERSION
-
cameraFOV
public float cameraFOVCamera field of view. -
cameraX
public float cameraXDefault position of the camera. -
cameraY
public float cameraYDefault position of the camera. -
cameraZ
public float cameraZDefault position of the camera. -
cameraNear
public float cameraNearDistance of the near and far planes. -
cameraFar
public float cameraFarDistance of the near and far planes. -
cameraAspect
public float cameraAspectAspect ratio of camera's view. -
defCameraFOV
public float defCameraFOVDefault camera properties. -
defCameraX
public float defCameraX -
defCameraY
public float defCameraY -
defCameraZ
public float defCameraZ -
defCameraNear
public float defCameraNear -
defCameraFar
public float defCameraFar -
defCameraAspect
public float defCameraAspect -
projection
-
camera
-
cameraInv
-
modelview
-
modelviewInv
-
projmodelview
-
lights
public boolean lights -
lightCount
public int lightCount -
lightType
public int[] lightTypeLight types -
lightPosition
public float[] lightPositionLight positions -
lightNormal
public float[] lightNormalLight direction (normalized vector) -
lightAmbient
public float[] lightAmbientAmbient colors for lights. -
lightDiffuse
public float[] lightDiffuseDiffuse colors for lights. -
lightSpecular
public float[] lightSpecularSpecular colors for lights. Internally these are stored as numbers between 0 and 1. -
lightFalloffCoefficients
public float[] lightFalloffCoefficientsLight falloff -
lightSpotParameters
public float[] lightSpotParametersLight spot parameters: Cosine of light spot angle and concentration -
currentLightSpecular
public float[] currentLightSpecularCurrent specular color for lighting -
currentLightFalloffConstant
public float currentLightFalloffConstantCurrent light falloff -
currentLightFalloffLinear
public float currentLightFalloffLinear -
currentLightFalloffQuadratic
public float currentLightFalloffQuadratic
-
-
Constructor Details
-
PGraphicsOpenGL
public PGraphicsOpenGL()
-
-
Method Details
-
setParent
-
setPrimary
public void setPrimary(boolean primary) Description copied from class:PGraphics
Set (or unset) this as the main drawing surface. Meaning that it can safely be set to opaque (and given a default gray background), or anything else that goes along with that.- Overrides:
setPrimary
in classPGraphics
-
setSize
public void setSize(int iwidth, int iheight) Description copied from class:PGraphics
The final step in setting up a renderer, set its size of this renderer. This was formerly handled by the constructor, but instead it's been broken out so that setParent/setPrimary/setPath can be handled differently. Important: this is ignored by the Methods task because otherwise it will override setSize() in PApplet/Applet/Component, which will 1) not call super.setSize(), and 2) will cause the renderer to be resized from the event thread (EDT), causing a nasty crash as it collides with the animation thread. -
dispose
public void dispose()Description copied from class:PGraphics
Handle any shutdown for this graphics context.This is called when a sketch is shut down and this renderer was specified using the size() command, or inside endRecord() and endRaw(), in order to shut things off.
-
createSurface
- Overrides:
createSurface
in classPGraphics
-
saveImpl
-
setCache
Description copied from class:PGraphics
Store data of some kind for the renderer that requires extra metadata of some kind. Usually this is a renderer-specific representation of the image data, for instance a BufferedImage with tint() settings applied for PGraphicsJava2D, or resized image data and OpenGL texture indices for PGraphicsOpenGL. -
getCache
Description copied from class:PGraphics
Get cache storage data for the specified renderer. Because each renderer will cache data in different formats, it's necessary to store cache data keyed by the renderer object. Otherwise, attempting to draw the same image to both a PGraphicsJava2D and a PGraphicsOpenGL will cause errors. -
removeCache
Description copied from class:PGraphics
Remove information associated with this renderer from the cache, if any.- Overrides:
removeCache
in classPGraphics
- Parameters:
image
- The image whose cache data should be removed
-
beginDraw
public void beginDraw()Description copied from class:PGraphics
Sets the default properties for a PGraphics object. It should be called before anything is drawn into the object.Advanced
When creating your own PGraphics, you should call this before drawing anything. -
endDraw
public void endDraw()Description copied from class:PGraphics
Finalizes the rendering of a PGraphics object so that it can be shown on screen.Advanced
When creating your own PGraphics, you should call this when you're finished drawing. -
beginPGL
-
endPGL
public void endPGL() -
updateProjmodelview
public void updateProjmodelview() -
hint
public void hint(int which) Description copied from class:PGraphics
Set various hints and hacks for the renderer. This is used to handle obscure rendering features that cannot be implemented in a consistent manner across renderers. Many options will often graduate to standard features instead of hints over time.
hint(ENABLE_OPENGL_4X_SMOOTH)- Enable 4x anti-aliasing for P3D. This can help force anti-aliasing if it has not been enabled by the user. On some graphics cards, this can also be set by the graphics driver's control panel, however not all cards make this available. This hint must be called immediately after the size() command because it resets the renderer, obliterating any settings and anything drawn (and like size(), re-running the code that came before it again).
hint(DISABLE_OPENGL_2X_SMOOTH) - In Processing 1.0, Processing always enables 2x smoothing when the P3D renderer is used. This hint disables the default 2x smoothing and returns the smoothing behavior found in earlier releases, where smooth() and noSmooth() could be used to enable and disable smoothing, though the quality was inferior.
hint(ENABLE_NATIVE_FONTS) - Use the native version fonts when they are installed, rather than the bitmapped version from a .vlw file. This is useful with the default (or JAVA2D) renderer setting, as it will improve font rendering speed. This is not enabled by default, because it can be misleading while testing because the type will look great on your machine (because you have the font installed) but lousy on others' machines if the identical font is unavailable. This option can only be set per-sketch, and must be called before any use of textFont().
hint(DISABLE_DEPTH_TEST) - Disable the zbuffer, allowing you to draw on top of everything at will. When depth testing is disabled, items will be drawn to the screen sequentially, like a painting. This hint is most often used to draw in 3D, then draw in 2D on top of it (for instance, to draw GUI controls in 2D on top of a 3D interface). Starting in release 0149, this will also clear the depth buffer. Restore the default with hint(ENABLE_DEPTH_TEST), but note that with the depth buffer cleared, any 3D drawing that happens later in draw() will ignore existing shapes on the screen.
hint(ENABLE_DEPTH_SORT) - Enable primitive z-sorting of triangles and lines in P3D and OPENGL. This can slow performance considerably, and the algorithm is not yet perfect. Restore the default with hint(DISABLE_DEPTH_SORT).
hint(DISABLE_OPENGL_ERROR_REPORT) - Speeds up the P3D renderer setting by not checking for errors while running. Undo with hint(ENABLE_OPENGL_ERROR_REPORT).
hint(ENABLE_BUFFER_READING) - Depth and stencil buffers in P2D/P3D will be down-sampled to make PGL#readPixels work with multisampling. Enabling this introduces some overhead, so if you experience bad performance, disable multisampling with noSmooth() instead. This hint is not intended to be enabled and disabled repeatedly, so call this once in setup() or after creating your PGraphics2D/3D. You can restore the default with hint(DISABLE_BUFFER_READING) if you don't plan to read depth from this PGraphics anymore.
hint(ENABLE_KEY_REPEAT) - Auto-repeating key events are discarded by default (works only in P2D/P3D); use this hint to get all the key events (including auto-repeated). Call hint(DISABLE_KEY_REPEAT) to get events only when the key goes physically up or down.
hint(DISABLE_ASYNC_SAVEFRAME) - P2D/P3D only - save() and saveFrame() will not use separate threads for saving and will block until the image is written to the drive. This was the default behavior in 3.0b7 and before. To enable, call hint(ENABLE_ASYNC_SAVEFRAME). -
beginShape
public void beginShape(int kind) Description copied from class:PGraphics
Using the beginShape() and endShape() functions allow creating more complex forms. beginShape() begins recording vertices for a shape and endShape() stops recording. The value of the kind parameter tells it which types of shapes to create from the provided vertices. With no mode specified, the shape can be any irregular polygon. The parameters available for beginShape() are POINTS, LINES, TRIANGLES, TRIANGLE_FAN, TRIANGLE_STRIP, QUADS, and QUAD_STRIP. After calling the beginShape() function, a series of vertex() commands must follow. To stop drawing the shape, call endShape(). The vertex() function with two parameters specifies a position in 2D and the vertex() function with three parameters specifies a position in 3D. Each shape will be outlined with the current stroke color and filled with the fill color.
Transformations such as translate(), rotate(), and scale() do not work within beginShape(). It is also not possible to use other shapes, such as ellipse() or rect() within beginShape().
The P2D and P3D renderers allow stroke() and fill() to be altered on a per-vertex basis, but the default renderer does not. Settings such as strokeWeight(), strokeCap(), and strokeJoin() cannot be changed while inside a beginShape()/endShape() block with any renderer.- Overrides:
beginShape
in classPGraphics
- Parameters:
kind
- Either POINTS, LINES, TRIANGLES, TRIANGLE_FAN, TRIANGLE_STRIP, QUADS, or QUAD_STRIP- See Also:
-
endShape
public void endShape(int mode) Description copied from class:PGraphics
The endShape() function is the companion to beginShape() and may only be called after beginShape(). When endshape() is called, all the image data defined since the previous call to beginShape() is written into the image buffer. The constant CLOSE as the value for the MODE parameter to close the shape (to connect the beginning and the end). -
textureWrap
public void textureWrap(int wrap) Description copied from class:PGraphics
Defines if textures repeat or draw once within a texture map. The two parameters are CLAMP (the default behavior) and REPEAT. This function only works with the P2D and P3D renderers.- Overrides:
textureWrap
in classPGraphics
- Parameters:
wrap
- Either CLAMP (default) or REPEAT- See Also:
-
textureSampling
public void textureSampling(int sampling) -
beginContour
public void beginContour()Description copied from class:PGraphics
Use the beginContour() and endContour() function to create negative shapes within shapes such as the center of the letter "O". beginContour() begins recording vertices for the shape and endContour() stops recording. The vertices that define a negative shape must "wind" in the opposite direction from the exterior shape. First draw vertices for the exterior shape in clockwise order, then for internal shapes, draw vertices counterclockwise.
These functions can only be used within a beginShape()/endShape() pair and transformations such as translate(), rotate(), and scale() do not work within a beginContour()/endContour() pair. It is also not possible to use other shapes, such as ellipse() or rect() within.- Overrides:
beginContour
in classPGraphics
-
endContour
public void endContour()Description copied from class:PGraphics
Use the beginContour() and endContour() function to create negative shapes within shapes such as the center of the letter "O". beginContour() begins recording vertices for the shape and endContour() stops recording. The vertices that define a negative shape must "wind" in the opposite direction from the exterior shape. First draw vertices for the exterior shape in clockwise order, then for internal shapes, draw vertices counterclockwise.
These functions can only be used within a beginShape()/endShape() pair and transformations such as translate(), rotate(), and scale() do not work within a beginContour()/endContour() pair. It is also not possible to use other shapes, such as ellipse() or rect() within.- Overrides:
endContour
in classPGraphics
-
vertex
public void vertex(float x, float y) -
vertex
public void vertex(float x, float y, float u, float v) -
vertex
public void vertex(float x, float y, float z) -
vertex
public void vertex(float x, float y, float z, float u, float v) Description copied from class:PGraphics
All shapes are constructed by connecting a series of vertices. vertex() is used to specify the vertex coordinates for points, lines, triangles, quads, and polygons. It is used exclusively within the beginShape() and endShape() functions.
Drawing a vertex in 3D using the z parameter requires the P3D parameter in combination with size, as shown in the above example.
This function is also used to map a texture onto geometry. The texture() function declares the texture to apply to the geometry and the u and v coordinates set define the mapping of this texture to the form. By default, the coordinates used for u and v are specified in relation to the image's size in pixels, but this relation can be changed with textureMode(). -
attribPosition
- Overrides:
attribPosition
in classPGraphics
-
attribNormal
- Overrides:
attribNormal
in classPGraphics
-
attribColor
- Overrides:
attribColor
in classPGraphics
-
attrib
-
attrib
-
attrib
-
noClip
public void noClip()Description copied from class:PGraphics
Disables the clipping previously started by the clip() function. -
flush
public void flush() -
bezierVertex
public void bezierVertex(float x2, float y2, float x3, float y3, float x4, float y4) - Overrides:
bezierVertex
in classPGraphics
-
bezierVertex
public void bezierVertex(float x2, float y2, float z2, float x3, float y3, float z3, float x4, float y4, float z4) Description copied from class:PGraphics
Specifies vertex coordinates for Bézier curves. Each call to bezierVertex() defines the position of two control points and one anchor point of a Bézier curve, adding a new segment to a line or shape. The first time bezierVertex() is used within a beginShape() call, it must be prefaced with a call to vertex() to set the first anchor point. This function must be used between beginShape() and endShape() and only when there is no MODE parameter specified to beginShape(). Using the 3D version requires rendering with P3D (see the Environment reference for more information).- Overrides:
bezierVertex
in classPGraphics
- Parameters:
x2
- the x-coordinate of the 1st control pointy2
- the y-coordinate of the 1st control pointz2
- the z-coordinate of the 1st control pointx3
- the x-coordinate of the 2nd control pointy3
- the y-coordinate of the 2nd control pointz3
- the z-coordinate of the 2nd control pointx4
- the x-coordinate of the anchor pointy4
- the y-coordinate of the anchor pointz4
- the z-coordinate of the anchor point- See Also:
-
quadraticVertex
public void quadraticVertex(float cx, float cy, float x3, float y3) Description copied from class:PGraphics
Specifies vertex coordinates for quadratic Bézier curves. Each call to quadraticVertex() defines the position of one control point and one anchor point of a Bézier curve, adding a new segment to a line or shape. The first time quadraticVertex() is used within a beginShape() call, it must be prefaced with a call to vertex() to set the first anchor point. This function must be used between beginShape() and endShape() and only when there is no MODE parameter specified to beginShape(). Using the 3D version requires rendering with P3D (see the Environment reference for more information).- Overrides:
quadraticVertex
in classPGraphics
- Parameters:
cx
- the x-coordinate of the control pointcy
- the y-coordinate of the control pointx3
- the x-coordinate of the anchor pointy3
- the y-coordinate of the anchor point- See Also:
-
quadraticVertex
public void quadraticVertex(float cx, float cy, float cz, float x3, float y3, float z3) - Overrides:
quadraticVertex
in classPGraphics
cz
- the z-coordinate of the control pointz3
- the z-coordinate of the anchor point
-
curveVertex
public void curveVertex(float x, float y) Description copied from class:PGraphics
Specifies vertex coordinates for curves. This function may only be used between beginShape() and endShape() and only when there is no MODE parameter specified to beginShape(). The first and last points in a series of curveVertex() lines will be used to guide the beginning and end of the curve. A minimum of four points is required to draw a tiny curve between the second and third points. Adding a fifth point with curveVertex() will draw the curve between the second, third, and fourth points. The curveVertex() function is an implementation of Catmull-Rom splines. Using the 3D version requires rendering with P3D (see the Environment reference for more information).- Overrides:
curveVertex
in classPGraphics
- Parameters:
x
- the x-coordinate of the vertexy
- the y-coordinate of the vertex- See Also:
-
PGraphics.curve(float, float, float, float, float, float, float, float, float, float, float, float)
PGraphics.beginShape(int)
PGraphics.endShape(int)
PGraphics.vertex(float, float, float, float, float)
PGraphics.bezier(float, float, float, float, float, float, float, float, float, float, float, float)
PGraphics.quadraticVertex(float, float, float, float, float, float)
-
curveVertex
public void curveVertex(float x, float y, float z) - Overrides:
curveVertex
in classPGraphics
z
- the z-coordinate of the vertex
-
point
public void point(float x, float y) Description copied from class:PGraphics
Draws a point, a coordinate in space at the dimension of one pixel. The first parameter is the horizontal value for the point, the second value is the vertical value for the point, and the optional third value is the depth value. Drawing this shape in 3D with the z parameter requires the P3D parameter in combination with size() as shown in the above example.
Use stroke() to set the color of a point().
Point appears round with the default strokeCap(ROUND) and square with strokeCap(PROJECT). Points are invisible with strokeCap(SQUARE) (no cap).
Using point() with strokeWeight(1) or smaller may draw nothing to the screen, depending on the graphics settings of the computer. Workarounds include setting the pixel using set() or drawing the point using either circle() or square(). -
point
public void point(float x, float y, float z) -
line
public void line(float x1, float y1, float x2, float y2) Description copied from class:PGraphics
Draws a line (a direct path between two points) to the screen. The version of line() with four parameters draws the line in 2D. To color a line, use the stroke() function. A line cannot be filled, therefore the fill() function will not affect the color of a line. 2D lines are drawn with a width of one pixel by default, but this can be changed with the strokeWeight() function. The version with six parameters allows the line to be placed anywhere within XYZ space. Drawing this shape in 3D with the z parameter requires the P3D parameter in combination with size() as shown in the above example. -
line
public void line(float x1, float y1, float z1, float x2, float y2, float z2) -
triangle
public void triangle(float x1, float y1, float x2, float y2, float x3, float y3) Description copied from class:PGraphics
A triangle is a plane created by connecting three points. The first two arguments specify the first point, the middle two arguments specify the second point, and the last two arguments specify the third point. -
quad
public void quad(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4) Description copied from class:PGraphics
A quad is a quadrilateral, a four sided polygon. It is similar to a rectangle, but the angles between its edges are not constrained to ninety degrees. The first pair of parameters (x1,y1) sets the first vertex and the subsequent pairs should proceed clockwise or counter-clockwise around the defined shape.- Overrides:
quad
in classPGraphics
- Parameters:
x1
- x-coordinate of the first cornery1
- y-coordinate of the first cornerx2
- x-coordinate of the second cornery2
- y-coordinate of the second cornerx3
- x-coordinate of the third cornery3
- y-coordinate of the third cornerx4
- x-coordinate of the fourth cornery4
- y-coordinate of the fourth corner
-
ellipseImpl
public void ellipseImpl(float a, float b, float c, float d) -
box
public void box(float w, float h, float d) -
sphere
public void sphere(float r) Description copied from class:PGraphics
A sphere is a hollow ball made from tessellated triangles.Advanced
Implementation notes:
cache all the points of the sphere in a static array top and bottom are just a bunch of triangles that land in the center point
sphere is a series of concentric circles who radii vary along the shape, based on, err... cos or something
[toxi 031031] new sphere code. removed all multiplies with radius, as scale() will take care of that anyway [toxi 031223] updated sphere code (removed modulo) and introduced sphereAt(x,y,z,r) to avoid additional translate()'s on the user/sketch side [davbol 080801] now using separate sphereDetailU/V
-
loadShape
Description copied from class:PGraphics
Loads geometry into a variable of type PShape. SVG and OBJ files may be loaded. To load correctly, the file must be located in the data directory of the current sketch. In most cases, loadShape() should be used inside setup() because loading shapes inside draw() will reduce the speed of a sketch.
Alternatively, the file maybe be loaded from anywhere on the local computer using an absolute path (something that starts with / on Unix and Linux, or a drive letter on Windows), or the filename parameter can be a URL for a file found on a network.
If the file is not available or an error occurs, null will be returned and an error message will be printed to the console. The error message does not halt the program, however the null value may cause a NullPointerException if your code does not check whether the value returned is null. -
pushMatrix
public void pushMatrix()Description copied from class:PGraphics
Pushes the current transformation matrix onto the matrix stack. Understanding pushMatrix() and popMatrix() requires understanding the concept of a matrix stack. The pushMatrix() function saves the current coordinate system to the stack and popMatrix() restores the prior coordinate system. pushMatrix() and popMatrix() are used in conjunction with the other transformation functions and may be embedded to control the scope of the transformations. -
popMatrix
public void popMatrix()Description copied from class:PGraphics
Pops the current transformation matrix off the matrix stack. Understanding pushing and popping requires understanding the concept of a matrix stack. The pushMatrix() function saves the current coordinate system to the stack and popMatrix() restores the prior coordinate system. pushMatrix() and popMatrix() are used in conjunction with the other transformation functions and may be embedded to control the scope of the transformations. -
translate
public void translate(float tx, float ty) Description copied from class:PGraphics
Specifies an amount to displace objects within the display window. The x parameter specifies left/right translation, the y parameter specifies up/down translation, and the z parameter specifies translations toward/away from the screen. Using this function with the z parameter requires using P3D as a parameter in combination with size as shown in the above example. Transformations are cumulative and apply to everything that happens after and subsequent calls to the function accumulates the effect. For example, calling translate(50, 0) and then translate(20, 0) is the same as translate(70, 0). If translate() is called within draw(), the transformation is reset when the loop begins again. This function can be further controlled by using pushMatrix() and popMatrix(). -
translate
public void translate(float tx, float ty, float tz) -
rotate
public void rotate(float angle) Two dimensional rotation. Same as rotateZ (this is identical to a 3D rotation along the z-axis) but included for clarity -- it'd be weird for people drawing 2D graphics to be using rotateZ. And they might kick our a-- for the confusion. -
rotateX
public void rotateX(float angle) Description copied from class:PGraphics
Rotates a shape around the x-axis the amount specified by the angle parameter. Angles should be specified in radians (values from 0 to PI*2) or converted to radians with the radians() function. Objects are always rotated around their relative position to the origin and positive numbers rotate objects in a counterclockwise direction. Transformations apply to everything that happens after and subsequent calls to the function accumulates the effect. For example, calling rotateX(PI/2) and then rotateX(PI/2) is the same as rotateX(PI). If rotateX() is called within the draw(), the transformation is reset when the loop begins again. This function requires using P3D as a third parameter to size() as shown in the example above. -
rotateY
public void rotateY(float angle) Description copied from class:PGraphics
Rotates a shape around the y-axis the amount specified by the angle parameter. Angles should be specified in radians (values from 0 to PI*2) or converted to radians with the radians() function. Objects are always rotated around their relative position to the origin and positive numbers rotate objects in a counterclockwise direction. Transformations apply to everything that happens after and subsequent calls to the function accumulates the effect. For example, calling rotateY(PI/2) and then rotateY(PI/2) is the same as rotateY(PI). If rotateY() is called within the draw(), the transformation is reset when the loop begins again. This function requires using P3D as a third parameter to size() as shown in the examples above. -
rotateZ
public void rotateZ(float angle) Description copied from class:PGraphics
Rotates a shape around the z-axis the amount specified by the angle parameter. Angles should be specified in radians (values from 0 to PI*2) or converted to radians with the radians() function. Objects are always rotated around their relative position to the origin and positive numbers rotate objects in a counterclockwise direction. Transformations apply to everything that happens after and subsequent calls to the function accumulates the effect. For example, calling rotateZ(PI/2) and then rotateZ(PI/2) is the same as rotateZ(PI). If rotateZ() is called within the draw(), the transformation is reset when the loop begins again. This function requires using P3D as a third parameter to size() as shown in the examples above. -
rotate
public void rotate(float angle, float v0, float v1, float v2) Rotate around an arbitrary vector, similar to glRotate(), except that it takes radians (instead of degrees). -
scale
public void scale(float s) Same as scale(s, s, s). -
scale
public void scale(float sx, float sy) Same as scale(sx, sy, 1). -
scale
public void scale(float sx, float sy, float sz) Scale in three dimensions. -
shearX
public void shearX(float angle) Description copied from class:PGraphics
Shears a shape around the x-axis the amount specified by the angle parameter. Angles should be specified in radians (values from 0 to PI*2) or converted to radians with the radians() function. Objects are always sheared around their relative position to the origin and positive numbers shear objects in a clockwise direction. Transformations apply to everything that happens after and subsequent calls to the function accumulates the effect. For example, calling shearX(PI/2) and then shearX(PI/2) is the same as shearX(PI). If shearX() is called within the draw(), the transformation is reset when the loop begins again.
Technically, shearX() multiplies the current transformation matrix by a rotation matrix. This function can be further controlled by the pushMatrix() and popMatrix() functions. -
shearY
public void shearY(float angle) Description copied from class:PGraphics
Shears a shape around the y-axis the amount specified by the angle parameter. Angles should be specified in radians (values from 0 to PI*2) or converted to radians with the radians() function. Objects are always sheared around their relative position to the origin and positive numbers shear objects in a clockwise direction. Transformations apply to everything that happens after and subsequent calls to the function accumulates the effect. For example, calling shearY(PI/2) and then shearY(PI/2) is the same as shearY(PI). If shearY() is called within the draw(), the transformation is reset when the loop begins again.
Technically, shearY() multiplies the current transformation matrix by a rotation matrix. This function can be further controlled by the pushMatrix() and popMatrix() functions. -
resetMatrix
public void resetMatrix()Description copied from class:PGraphics
Replaces the current matrix with the identity matrix. The equivalent function in OpenGL is glLoadIdentity().- Overrides:
resetMatrix
in classPGraphics
- See Also:
-
applyMatrix
- Overrides:
applyMatrix
in classPGraphics
-
applyMatrix
public void applyMatrix(float n00, float n01, float n02, float n10, float n11, float n12) - Overrides:
applyMatrix
in classPGraphics
- Parameters:
n00
- numbers which define the 4x4 matrix to be multipliedn01
- numbers which define the 4x4 matrix to be multipliedn02
- numbers which define the 4x4 matrix to be multipliedn10
- numbers which define the 4x4 matrix to be multipliedn11
- numbers which define the 4x4 matrix to be multipliedn12
- numbers which define the 4x4 matrix to be multiplied
-
applyMatrix
- Overrides:
applyMatrix
in classPGraphics
-
applyMatrix
public void applyMatrix(float n00, float n01, float n02, float n03, float n10, float n11, float n12, float n13, float n20, float n21, float n22, float n23, float n30, float n31, float n32, float n33) Apply a 4x4 transformation matrix to the modelview stack.- Overrides:
applyMatrix
in classPGraphics
n03
- numbers which define the 4x4 matrix to be multipliedn13
- numbers which define the 4x4 matrix to be multipliedn20
- numbers which define the 4x4 matrix to be multipliedn21
- numbers which define the 4x4 matrix to be multipliedn22
- numbers which define the 4x4 matrix to be multipliedn23
- numbers which define the 4x4 matrix to be multipliedn30
- numbers which define the 4x4 matrix to be multipliedn31
- numbers which define the 4x4 matrix to be multipliedn32
- numbers which define the 4x4 matrix to be multipliedn33
- numbers which define the 4x4 matrix to be multiplied
-
getMatrix
-
getMatrix
Description copied from class:PGraphics
Copy the current transformation matrix into the specified target. Pass in null to create a new matrix. -
setMatrix
Description copied from class:PGraphics
Set the current transformation to the contents of the specified source. -
setMatrix
Set the current transformation to the contents of the specified source. -
printMatrix
public void printMatrix()Print the current model (or "transformation") matrix.- Overrides:
printMatrix
in classPGraphics
- See Also:
-
pushProjection
public void pushProjection() -
popProjection
public void popProjection() -
resetProjection
public void resetProjection() -
applyProjection
-
applyProjection
public void applyProjection(float n00, float n01, float n02, float n03, float n10, float n11, float n12, float n13, float n20, float n21, float n22, float n23, float n30, float n31, float n32, float n33) -
setProjection
-
beginCamera
public void beginCamera()Set matrix mode to the camera matrix (instead of the current transformation matrix). This means applyMatrix, resetMatrix, etc. will affect the camera.Note that the camera matrix is *not* the perspective matrix, it contains the values of the modelview matrix immediatly after the latter was initialized with ortho() or camera(), or the modelview matrix as result of the operations applied between beginCamera()/endCamera().
beginCamera() specifies that all coordinate transforms until endCamera() should be pre-applied in inverse to the camera transform matrix. Note that this is only challenging when a user specifies an arbitrary matrix with applyMatrix(). Then that matrix will need to be inverted, which may not be possible. But take heart, if a user is applying a non-invertible matrix to the camera transform, then he is clearly up to no good, and we can wash our hands of those bad intentions.
begin/endCamera clauses do not automatically reset the camera transform matrix. That's because we set up a nice default camera transform in setup(), and we expect it to hold through draw(). So we don't reset the camera transform matrix at the top of draw(). That means that an innocuous-looking clause like
beginCamera(); translate(0, 0, 10); endCamera();
at the top of draw(), will result in a runaway camera that shoots infinitely out of the screen over time. In order to prevent this, it is necessary to call some function that does a hard reset of the camera transform matrix inside of begin/endCamera. Two options arecamera(); // sets up the nice default camera transform resetMatrix(); // sets up the identity camera transform
So to rotate a camera a constant amount, you might trybeginCamera(); camera(); rotateY(PI / 8); endCamera();
-
endCamera
public void endCamera()Record the current settings into the camera matrix, and set the matrix mode back to the current transformation matrix.Note that this will destroy any settings to scale(), translate(), or whatever, because the final camera matrix will be copied (not multiplied) into the modelview.
-
camera
public void camera()Set camera to the default settings.Processing camera behavior:
Camera behavior can be split into two separate components, camera transformation, and projection. The transformation corresponds to the physical location, orientation, and scale of the camera. In a physical camera metaphor, this is what can manipulated by handling the camera body (with the exception of scale, which doesn't really have a physcial analog). The projection corresponds to what can be changed by manipulating the lens.
We maintain separate matrices to represent the camera transform and projection. An important distinction between the two is that the camera transform should be invertible, where the projection matrix should not, since it serves to map three dimensions to two. It is possible to bake the two matrices into a single one just by multiplying them together, but it isn't a good idea, since lighting, z-ordering, and z-buffering all demand a true camera z coordinate after modelview and camera transforms have been applied but before projection. If the camera transform and projection are combined there is no way to recover a good camera-space z-coordinate from a model coordinate.
Fortunately, there are no functions that manipulate both camera transformation and projection.
camera() sets the camera position, orientation, and center of the scene. It replaces the camera transform with a new one.
The transformation functions are the same ones used to manipulate the modelview matrix (scale, translate, rotate, etc.). But they are bracketed with beginCamera(), endCamera() to indicate that they should apply (in inverse), to the camera transformation matrix.
-
camera
public void camera(float eyeX, float eyeY, float eyeZ, float centerX, float centerY, float centerZ, float upX, float upY, float upZ) More flexible method for dealing with camera().The actual call is like gluLookat. Here's the real skinny on what does what:
camera(); or camera(ex, ey, ez, cx, cy, cz, ux, uy, uz);
do not need to be called from with beginCamera();/endCamera(); That's because they always apply to the camera transformation, and they always totally replace it. That means that any coordinate transforms done before camera(); in draw() will be wiped out. It also means that camera() always operates in untransformed world coordinates. Therefore it is always redundant to call resetMatrix(); before camera(); This isn't technically true of gluLookat, but it's pretty much how it's used.Now, beginCamera(); and endCamera(); are useful if you want to move the camera around using transforms like translate(), etc. They will wipe out any coordinate system transforms that occur before them in draw(), but they will not automatically wipe out the camera transform. This means that they should be at the top of draw(). It also means that the following:
beginCamera(); rotateY(PI / 8); endCamera();
will result in a camera that spins without stopping. If you want to just rotate a small constant amount, try this:beginCamera(); camera(); // sets up the default view rotateY(PI / 8); endCamera();
That will rotate a little off of the default view. Note that this is entirely equivalent tocamera(); // sets up the default view beginCamera(); rotateY(PI / 8); endCamera();
because camera() doesn't care whether or not it's inside a begin/end clause. Basically it's safe to use camera() or camera(ex, ey, ez, cx, cy, cz, ux, uy, uz) as naked calls because they do all the matrix resetting automatically.- Overrides:
camera
in classPGraphics
- Parameters:
eyeX
- x-coordinate for the eyeeyeY
- y-coordinate for the eyeeyeZ
- z-coordinate for the eyecenterX
- x-coordinate for the center of the scenecenterY
- y-coordinate for the center of the scenecenterZ
- z-coordinate for the center of the sceneupX
- usually 0.0, 1.0, or -1.0upY
- usually 0.0, 1.0, or -1.0upZ
- usually 0.0, 1.0, or -1.0
-
printCamera
public void printCamera()Print the current camera matrix.- Overrides:
printCamera
in classPGraphics
- See Also:
-
ortho
public void ortho()Calls ortho() with the proper parameters for Processing's standard orthographic projection. -
ortho
public void ortho(float left, float right, float bottom, float top) Calls ortho() with the specified size of the viewing volume along the X and Z directions. -
ortho
public void ortho(float left, float right, float bottom, float top, float near, float far) Sets an orthographic projection. -
perspective
public void perspective()Calls perspective() with Processing's standard coordinate projection.Projection functions:
- frustrum()
- ortho()
- perspective()
This behavior is pretty much familiar from OpenGL, except where functions replace matrices, rather than multiplying against the previous.
- Overrides:
perspective
in classPGraphics
-
perspective
public void perspective(float fov, float aspect, float zNear, float zFar) Similar to gluPerspective(). Implementation based on Mesa's glu.c- Overrides:
perspective
in classPGraphics
- Parameters:
fov
- field-of-view angle (in radians) for vertical directionaspect
- ratio of width to heightzNear
- z-position of nearest clipping planezFar
- z-position of the farthest clipping plane
-
frustum
public void frustum(float left, float right, float bottom, float top, float znear, float zfar) Same as glFrustum(), except that it wipes out (rather than multiplies against) the current perspective matrix.Implementation based on the explanation in the OpenGL blue book.
- Overrides:
frustum
in classPGraphics
- Parameters:
left
- left coordinate of the clipping planeright
- right coordinate of the clipping planebottom
- bottom coordinate of the clipping planetop
- top coordinate of the clipping planeznear
- near component of the clipping plane; must be greater than zerozfar
- far component of the clipping plane; must be greater than the near value- See Also:
-
printProjection
public void printProjection()Print the current projection matrix.- Overrides:
printProjection
in classPGraphics
- See Also:
-
screenX
public float screenX(float x, float y) Description copied from class:PGraphics
Takes a three-dimensional X, Y, Z position and returns the X value for where it will appear on a (two-dimensional) screen. -
screenY
public float screenY(float x, float y) Description copied from class:PGraphics
Takes a three-dimensional X, Y, Z position and returns the Y value for where it will appear on a (two-dimensional) screen. -
screenX
public float screenX(float x, float y, float z) -
screenY
public float screenY(float x, float y, float z) -
screenZ
public float screenZ(float x, float y, float z) Description copied from class:PGraphics
Takes a three-dimensional X, Y, Z position and returns the Z value for where it will appear on a (two-dimensional) screen. -
modelX
public float modelX(float x, float y, float z) Description copied from class:PGraphics
Returns the three-dimensional X, Y, Z position in model space. This returns the X value for a given coordinate based on the current set of transformations (scale, rotate, translate, etc.) The X value can be used to place an object in space relative to the location of the original point once the transformations are no longer in use.
In the example, the modelX(), modelY(), and modelZ() functions record the location of a box in space after being placed using a series of translate and rotate commands. After popMatrix() is called, those transformations no longer apply, but the (x, y, z) coordinate returned by the model functions is used to place another box in the same location. -
modelY
public float modelY(float x, float y, float z) Description copied from class:PGraphics
Returns the three-dimensional X, Y, Z position in model space. This returns the Y value for a given coordinate based on the current set of transformations (scale, rotate, translate, etc.) The Y value can be used to place an object in space relative to the location of the original point once the transformations are no longer in use.
In the example, the modelX(), modelY(), and modelZ() functions record the location of a box in space after being placed using a series of translate and rotate commands. After popMatrix() is called, those transformations no longer apply, but the (x, y, z) coordinate returned by the model functions is used to place another box in the same location. -
modelZ
public float modelZ(float x, float y, float z) Description copied from class:PGraphics
Returns the three-dimensional X, Y, Z position in model space. This returns the Z value for a given coordinate based on the current set of transformations (scale, rotate, translate, etc.) The Z value can be used to place an object in space relative to the location of the original point once the transformations are no longer in use.
In the example, the modelX(), modelY(), and modelZ() functions record the location of a box in space after being placed using a series of translate and rotate commands. After popMatrix() is called, those transformations no longer apply, but the (x, y, z) coordinate returned by the model functions is used to place another box in the same location. -
popStyle
public void popStyle()Description copied from class:PGraphics
The pushStyle() function saves the current style settings and popStyle() restores the prior settings; these functions are always used together. They allow you to change the style settings and later return to what you had. When a new style is started with pushStyle(), it builds on the current style information. The pushStyle() and popStyle() functions can be embedded to provide more control (see the second example above for a demonstration.) -
strokeWeight
public void strokeWeight(float weight) Description copied from class:PGraphics
Sets the width of the stroke used for lines, points, and the border around shapes. All widths are set in units of pixels.
Using point() with strokeWeight(1) or smaller may draw nothing to the screen, depending on the graphics settings of the computer. Workarounds include setting the pixel using set() or drawing the point using either circle() or square().- Overrides:
strokeWeight
in classPGraphics
- Parameters:
weight
- the weight (in pixels) of the stroke- See Also:
-
strokeJoin
public void strokeJoin(int join) Description copied from class:PGraphics
Sets the style of the joints which connect line segments. These joints are either mitered, beveled, or rounded and specified with the corresponding parameters MITER, BEVEL, and ROUND. The default joint is MITER.- Overrides:
strokeJoin
in classPGraphics
- Parameters:
join
- either MITER, BEVEL, ROUND- See Also:
-
strokeCap
public void strokeCap(int cap) Description copied from class:PGraphics
Sets the style for rendering line endings. These ends are either squared, extended, or rounded, each of which specified with the corresponding parameters: SQUARE, PROJECT, and ROUND. The default cap is ROUND.
To make point() appear square, use strokeCap(PROJECT). Using strokeCap(SQUARE) (no cap) causes points to become invisible. -
lights
public void lights()Sets up an ambient and directional light using OpenGL. API taken from PGraphics3D.The Lighting Skinny: The way lighting works is complicated enough that it's worth producing a document to describe it. Lighting calculations proceed pretty much exactly as described in the OpenGL red book. Light-affecting material properties: AMBIENT COLOR - multiplies by light's ambient component - for believability this should match diffuse color DIFFUSE COLOR - multiplies by light's diffuse component SPECULAR COLOR - multiplies by light's specular component - usually less colored than diffuse/ambient SHININESS - the concentration of specular effect - this should be set pretty high (20-50) to see really noticeable specularity EMISSIVE COLOR - constant additive color effect Light types: AMBIENT - one color - no specular color - no direction - may have falloff (constant, linear, and quadratic) - may have position (which matters in non-constant falloff case) - multiplies by a material's ambient reflection DIRECTIONAL - has diffuse color - has specular color - has direction - no position - no falloff - multiplies by a material's diffuse and specular reflections POINT - has diffuse color - has specular color - has position - no direction - may have falloff (constant, linear, and quadratic) - multiplies by a material's diffuse and specular reflections SPOT - has diffuse color - has specular color - has position - has direction - has cone angle (set to half the total cone angle) - has concentration value - may have falloff (constant, linear, and quadratic) - multiplies by a material's diffuse and specular reflections Normal modes: All of the primitives (rect, box, sphere, etc.) have their normals set nicely. During beginShape/endShape normals can be set by the user. AUTO-NORMAL - if no normal is set during the shape, we are in auto-normal mode - auto-normal calculates one normal per triangle (face-normal mode) SHAPE-NORMAL - if one normal is set during the shape, it will be used for all vertices VERTEX-NORMAL - if multiple normals are set, each normal applies to subsequent vertices - (except for the first one, which applies to previous and subsequent vertices) Efficiency consequences: There is a major efficiency consequence of position-dependent lighting calculations per vertex. (See below for determining whether lighting is vertex position-dependent.) If there is no position dependency then the only factors that affect the lighting contribution per vertex are its colors and its normal. There is a major efficiency win if 1) lighting is not position dependent 2) we are in AUTO-NORMAL or SHAPE-NORMAL mode because then we can calculate one lighting contribution per shape (SHAPE-NORMAL) or per triangle (AUTO-NORMAL) and simply multiply it into the vertex colors. The converse is our worst-case performance when 1) lighting is position dependent 2) we are in AUTO-NORMAL mode because then we must calculate lighting per-face * per-vertex. Each vertex has a different lighting contribution per face in which it appears. Yuck. Determining vertex position dependency: If any of the following factors are TRUE then lighting is vertex position dependent: 1) Any lights uses non-constant falloff 2) There are any point or spot lights 3) There is a light with specular color AND there is a material with specular color So worth noting is that default lighting (a no-falloff ambient and a directional without specularity) is not position-dependent. We should capitalize. Simon Greenwold, April 2005
- Overrides:
lights
in classPGraphics
- See Also:
-
PGraphics.ambientLight(float, float, float, float, float, float)
PGraphics.directionalLight(float, float, float, float, float, float)
PGraphics.pointLight(float, float, float, float, float, float)
PGraphics.spotLight(float, float, float, float, float, float, float, float, float, float, float)
PGraphics.noLights()
-
noLights
public void noLights()Disables lighting. -
ambientLight
public void ambientLight(float r, float g, float b) Add an ambient light based on the current color mode.- Overrides:
ambientLight
in classPGraphics
- Parameters:
r
- red or hue value (depending on current color mode)g
- green or saturation value (depending on current color mode)b
- blue or brightness value (depending on current color mode)- See Also:
-
ambientLight
public void ambientLight(float r, float g, float b, float x, float y, float z) Add an ambient light based on the current color mode. This version includes an (x, y, z) position for situations where the falloff distance is used.- Overrides:
ambientLight
in classPGraphics
x
- x-coordinate of the lighty
- y-coordinate of the lightz
- z-coordinate of the light
-
directionalLight
public void directionalLight(float r, float g, float b, float dx, float dy, float dz) Description copied from class:PGraphics
Adds a directional light. Directional light comes from one direction and is stronger when hitting a surface squarely and weaker if it hits at a gentle angle. After hitting a surface, a directional lights scatters in all directions. Lights need to be included in the draw() to remain persistent in a looping program. Placing them in the setup() of a looping program will cause them to only have an effect the first time through the loop. The affect of the v1, v2, and v3 parameters is determined by the current color mode. The nx, ny, and nz parameters specify the direction the light is facing. For example, setting ny to -1 will cause the geometry to be lit from below (the light is facing directly upward).- Overrides:
directionalLight
in classPGraphics
- Parameters:
r
- red or hue value (depending on current color mode)g
- green or saturation value (depending on current color mode)b
- blue or brightness value (depending on current color mode)dx
- direction along the x-axisdy
- direction along the y-axisdz
- direction along the z-axis- See Also:
-
pointLight
public void pointLight(float r, float g, float b, float x, float y, float z) Description copied from class:PGraphics
Adds a point light. Lights need to be included in the draw() to remain persistent in a looping program. Placing them in the setup() of a looping program will cause them to only have an effect the first time through the loop. The v1, v2, and v3 parameters are interpreted as either RGB or HSB values, depending on the current color mode. The x, y, and z parameters set the position of the light.- Overrides:
pointLight
in classPGraphics
- Parameters:
r
- red or hue value (depending on current color mode)g
- green or saturation value (depending on current color mode)b
- blue or brightness value (depending on current color mode)x
- x-coordinate of the lighty
- y-coordinate of the lightz
- z-coordinate of the light- See Also:
-
spotLight
public void spotLight(float r, float g, float b, float x, float y, float z, float dx, float dy, float dz, float angle, float concentration) Description copied from class:PGraphics
Adds a spotlight. Lights need to be included in the draw() to remain persistent in a looping program. Placing them in the setup() of a looping program will cause them to only have an effect the first time through the loop. The v1, v2, and v3 parameters are interpreted as either RGB or HSB values, depending on the current color mode. The x, y, and z parameters specify the position of the light and nx, ny, nz specify the direction of light. The angle parameter affects angle of the spotlight cone, while concentration sets the bias of light focusing toward the center of that cone.- Overrides:
spotLight
in classPGraphics
- Parameters:
r
- red or hue value (depending on current color mode)g
- green or saturation value (depending on current color mode)b
- blue or brightness value (depending on current color mode)x
- x-coordinate of the lighty
- y-coordinate of the lightz
- z-coordinate of the lightdx
- direction along the x-axisdy
- direction along the y-axisdz
- direction along the z-axisangle
- angle of the spotlight coneconcentration
- exponent determining the center bias of the cone- See Also:
-
lightFalloff
public void lightFalloff(float constant, float linear, float quadratic) Set the light falloff rates for the last light that was created. Default is lightFalloff(1, 0, 0).- Overrides:
lightFalloff
in classPGraphics
- Parameters:
constant
- constant value or determining fallofflinear
- linear value for determining falloffquadratic
- quadratic value for determining falloff- See Also:
-
lightSpecular
public void lightSpecular(float x, float y, float z) Set the specular color of the last light created.- Overrides:
lightSpecular
in classPGraphics
- Parameters:
x
- red or hue value (depending on current color mode)y
- green or saturation value (depending on current color mode)z
- blue or brightness value (depending on current color mode)- See Also:
-
isGL
public boolean isGL()Description copied from class:PGraphics
Return true if this renderer uses OpenGL. Defaults to false. -
loadPixels
public void loadPixels()Description copied from class:PImage
Loads the pixel data of the current display window into the pixels[] array. This function must always be called before reading from or writing to pixels[]. Subsequent changes to the display window will not be reflected in pixels until loadPixels() is called again.Advanced
Call this when you want to mess with the pixels[] array. For subclasses where the pixels[] buffer isn't set by default, this should copy all data into the pixels[] array- Overrides:
loadPixels
in classPImage
-
get
public int get(int x, int y) Description copied from class:PImage
Reads the color of any pixel or grabs a section of an image. If no parameters are specified, the entire image is returned. Use the x and y parameters to get the value of one pixel. Get a section of the display window by specifying an additional width and height parameter. When getting an image, the x and y parameters define the coordinates for the upper-left corner of the image, regardless of the current imageMode().
If the pixel requested is outside the image window, black is returned. The numbers returned are scaled according to the current color ranges, but only RGB values are returned by this function. For example, even though you may have drawn a shape with colorMode(HSB), the numbers returned will be in RGB format.
Getting the color of a single pixel with get(x, y) is easy, but not as fast as grabbing the data directly from pixels[]. The equivalent statement to get(x, y) using pixels[] is pixels[y*width+x]. See the reference for pixels[] for more information.Advanced
Returns an ARGB "color" type (a packed 32-bit int) with the color. If the coordinate is outside the image, zero is returned (black, but completely transparent).If the image is in RGB format (i.e. on a PVideo object), the value will get its high bits set, just to avoid cases where they haven't been set already.
If the image is in ALPHA format, this returns a white with its alpha value set.
This function is included primarily for beginners. It is quite slow because it has to check to see if the x, y that was provided is inside the bounds, and then has to check to see what image type it is. If you want things to be more efficient, access the pixels[] array directly.
-
set
public void set(int x, int y, int argb) Description copied from class:PImage
Changes the color of any pixel or writes an image directly into the display window.
The x and y parameters specify the pixel to change and the color parameter specifies the color value. The color parameter is affected by the current color mode (the default is RGB values from 0 to 255). When setting an image, the x and y parameters define the coordinates for the upper-left corner of the image, regardless of the current imageMode().
Setting the color of a single pixel with set(x, y) is easy, but not as fast as putting the data directly into pixels[]. The equivalent statement to set(x, y, #000000) using pixels[] is pixels[y*width+x] = #000000. See the reference for pixels[] for more information. -
loadTexture
public void loadTexture() -
updateTexture
public void updateTexture() -
updateTexture
public void updateTexture(int x, int y, int w, int h) -
updateDisplay
public void updateDisplay() -
mask
Description copied from class:PImage
Masks part of an image from displaying by loading another image and using it as an alpha channel. This mask image should only contain grayscale data, but only the blue color channel is used. The mask image needs to be the same size as the image to which it is applied.
In addition to using a mask image, an integer array containing the alpha channel data can be specified directly. This method is useful for creating dynamically generated alpha masks. This array must be of the same length as the target image's pixels array and should contain only grayscale data of values between 0-255.Advanced
Set alpha channel for an image. Black colors in the source image will make the destination image completely transparent, and white will make things fully opaque. Gray values will be in-between steps.Strictly speaking the "blue" value from the source image is used as the alpha color. For a fully grayscale image, this is correct, but for a color image it's not 100% accurate. For a more accurate conversion, first use filter(GRAY) which will make the image into a "correct" grayscale by performing a proper luminance-based conversion.
-
filter
public void filter(int kind) This is really inefficient and not a good idea in OpenGL. Use get() and set() with a smaller image area, or call the filter on an image instead, and then draw that. -
filter
public void filter(int kind, float param) This is really inefficient and not a good idea in OpenGL. Use get() and set() with a smaller image area, or call the filter on an image instead, and then draw that. -
filter
-
copy
public void copy(int sx, int sy, int sw, int sh, int dx, int dy, int dw, int dh) Description copied from class:PImage
Copies a region of pixels from one image into another. If the source and destination regions aren't the same size, it will automatically resize source pixels to fit the specified target region. No alpha information is used in the process, however if the source image has an alpha channel set, it will be copied as well.
As of release 0149, this function ignores imageMode().- Overrides:
copy
in classPImage
- Parameters:
sx
- X coordinate of the source's upper left cornersy
- Y coordinate of the source's upper left cornersw
- source image widthsh
- source image heightdx
- X coordinate of the destination's upper left cornerdy
- Y coordinate of the destination's upper left cornerdw
- destination image widthdh
- destination image height- See Also:
-
copy
-
getTexture
Not an approved function, this will change or be removed in the future. This utility method returns the texture associated to the renderer's. drawing surface, making sure is updated to reflect the current contents off the screen (or offscreen drawing surface). -
getTexture
Not an approved function either, don't use it. -
getTexture
Not an approved function, this will change or be removed in the future. This utility method returns the texture associated to the image. creating and/or updating it if needed.- Parameters:
img
- the image to have a texture metadata associated to it
-
getFrameBuffer
Not an approved function, test its use in libraries to grab the FB objects for offscreen PGraphics. -
getFrameBuffer
-
resize
public void resize(int wide, int high) Description copied from class:PImage
Resize the image to a new width and height. To make the image scale proportionally, use 0 as the value for the wide or high parameter. For instance, to make the width of an image 150 pixels, and change the height using the same proportion, use resize(150, 0).
Even though a PGraphics is technically a PImage, it is not possible to rescale the image data found in a PGraphics. (It's simply not possible to do this consistently across renderers: technically infeasible with P3D, or what would it even do with PDF?) If you want to resize PGraphics content, first get a copy of its image data using the get() method, and call resize() on the PImage that is returned. -
loadShader
Description copied from class:PGraphics
Loads a shader into the PShader object. The shader file must be loaded in the sketch's "data" folder/directory to load correctly. Shaders are compatible with the P2D and P3D renderers, but not with the default renderer.
Alternatively, the file maybe be loaded from anywhere on the local computer using an absolute path (something that starts with / on Unix and Linux, or a drive letter on Windows), or the filename parameter can be a URL for a file found on a network.
If the file is not available or an error occurs, null will be returned and an error message will be printed to the console. The error message does not halt the program, however the null value may cause a NullPointerException if your code does not check whether the value returned is null.- Overrides:
loadShader
in classPGraphics
- Parameters:
fragFilename
- name of fragment shader file
-
loadShader
- Overrides:
loadShader
in classPGraphics
vertFilename
- name of vertex shader file
-
shader
Description copied from class:PGraphics
Applies the shader specified by the parameters. It's compatible with the P2D and P3D renderers, but not with the default renderer. -
shader
-
resetShader
public void resetShader()Description copied from class:PGraphics
Restores the default shaders. Code that runs after resetShader() will not be affected by previously defined shaders.- Overrides:
resetShader
in classPGraphics
-
resetShader
public void resetShader(int kind) - Overrides:
resetShader
in classPGraphics
- Parameters:
kind
- type of shader, either POINTS, LINES, or TRIANGLES
-