This function is used to enable or disable special features that control how graphics are drawn.
1 2 3 4 5 6 7 8 9 10 11 12 13
def setup(): py5.size(200, 200, py5.P3D) py5.hint(py5.DISABLE_DEPTH_TEST) def draw(): py5.background(204) py5.push_matrix() py5.translate(py5.width//2, py5.height//2) py5.rotate_y(1) py5.box(60) py5.pop_matrix() py5.line(10, 100, 190, 100)
This function is used to enable or disable special features that control how graphics are drawn. In the course of developing Processing, the developers had to make hard decisions about tradeoffs between performance and visual quality. They put significant effort into determining what makes most sense for the largest number of users, and then use functions like
hint() to allow people to tune the settings for their particular Sketch. Implementing a
hint() is a last resort that’s used when a more elegant solution cannot be found. Some options might graduate to standard features instead of hints over time, or be added and removed between (major) releases.
Hints used by the Default Renderer¶
ENABLE_STROKE_PURE: Fixes a problem with shapes that have a stroke and are rendered using small steps (for instance, using vertex() with points that are close to one another), or are drawn at small sizes.
Hints for use with
DISABLE_OPENGL_ERRORS: Speeds up the
P3Drenderer setting by not checking for errors while running.
DISABLE_TEXTURE_MIPMAPS: Disable generation of texture mipmaps in
P3D. This results in lower quality - but faster - rendering of texture images when they appear smaller than their native resolutions (the mipmaps are scaled-down versions of a texture that make it look better when drawing it at a small size). However, the difference in performance is fairly minor on recent desktop video cards.
Hints for use with
DISABLE_DEPTH_MASK: Disables writing into the depth buffer. This means that a shape drawn with this hint can be hidden by another shape drawn later, irrespective of their distances to the camera. Note that this is different from disabling the depth test. The depth test is still applied, as long as the
DISABLE_DEPTH_TESThint is not called, but the depth values of the objects are not recorded. This is useful when drawing a semi-transparent 3D object without depth sorting, in order to avoid visual glitches due the faces of the object being at different distances from the camera, but still having the object properly occluded by the rest of the objects in the scene.
ENABLE_DEPTH_SORT: Enable primitive z-sorting of triangles and lines in
P3D. This can slow performance considerably, and the algorithm is not yet perfect.
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). When called, 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 will ignore existing shapes on the screen.
DISABLE_OPTIMIZED_STROKE: Forces the
P3Drenderer to draw each shape (including its strokes) separately, instead of batching them into larger groups for better performance. One consequence of this is that 2D items drawn with
P3Dare correctly stacked on the screen, depending on the order in which they were drawn. Otherwise, glitches such as the stroke lines being drawn on top of the interior of all the shapes will occur. However, this hint can make rendering substantially slower, so it is recommended to use it only when drawing a small amount of shapes. For drawing two-dimensional scenes, use the
P2Drenderer instead, which doesn’t need the hint to properly stack shapes and their strokes.
ENABLE_STROKE_PERSPECTIVE: Enables stroke geometry (lines and points) to be affected by the perspective, meaning that they will look smaller as they move away from the camera.
Underlying Processing method: hint
hint(which: int, /) -> None
which: int - hint to use when rendering Sketch
Updated on November 12, 2021 11:30:58am UTC