Blender V4.3
GPU_immediate_util.hh File Reference

Go to the source code of this file.

Functions

void immRectf (uint pos, float x1, float y1, float x2, float y2)
 
void immRecti (uint pos, int x1, int y1, int x2, int y2)
 
void immRectf_fast (uint pos, float x1, float y1, float x2, float y2)
 
void immRectf_fast_with_color (uint pos, uint col, float x1, float y1, float x2, float y2, const float color[4])
 
void immRecti_fast_with_color (uint pos, uint col, int x1, int y1, int x2, int y2, const float color[4])
 
void imm_cpack (uint x)
 
void imm_draw_circle_wire_2d (uint shdr_pos, float x, float y, float radius, int nsegments)
 
void imm_draw_circle_fill_2d (uint shdr_pos, float x, float y, float radius, int nsegments)
 
void imm_draw_circle_wire_aspect_2d (uint shdr_pos, float x, float y, float radius_x, float radius_y, int nsegments)
 
void imm_draw_circle_fill_aspect_2d (uint shdr_pos, float x, float y, float radius_x, float radius_y, int nsegments)
 
void imm_draw_circle_wire_3d (uint pos, float x, float y, float radius, int nsegments)
 
void imm_draw_circle_wire_aspect_3d (uint pos, float x, float y, float radius_x, float radius_y, int nsegments)
 
void imm_draw_circle_dashed_3d (uint pos, float x, float y, float radius, int nsegments)
 
void imm_draw_circle_fill_3d (uint pos, float x, float y, float radius, int nsegments)
 
void imm_draw_circle_fill_aspect_3d (uint pos, float x, float y, float radius_x, float radius_y, int nsegments)
 
void imm_draw_circle_partial_wire_2d (uint pos, float x, float y, float radius, int nsegments, float start, float sweep)
 
void imm_draw_circle_partial_wire_3d (uint pos, float x, float y, float z, float radius, int nsegments, float start, float sweep)
 
void imm_draw_disk_partial_fill_2d (uint pos, float x, float y, float rad_inner, float rad_outer, int nsegments, float start, float sweep)
 
void imm_draw_disk_partial_fill_3d (uint pos, float x, float y, float z, float rad_inner, float rad_outer, int nsegments, float start, float sweep)
 
void imm_draw_box_wire_2d (uint pos, float x1, float y1, float x2, float y2)
 
void imm_draw_box_wire_3d (uint pos, float x1, float y1, float x2, float y2)
 
void imm_draw_box_checker_2d_ex (float x1, float y1, float x2, float y2, const float color_primary[4], const float color_secondary[4], int checker_size)
 
void imm_draw_box_checker_2d (float x1, float y1, float x2, float y2)
 
void imm_draw_cube_fill_3d (uint pos, const float center[3], const float aspect[3])
 
void imm_draw_cube_wire_3d (uint pos, const float center[3], const float aspect[3])
 
void imm_draw_cube_corners_3d (uint pos, const float center[3], const float aspect[3], float factor)
 
void imm_draw_cylinder_fill_normal_3d (uint pos, uint nor, float base, float top, float height, int slices, int stacks)
 
void imm_draw_cylinder_wire_3d (uint pos, float base, float top, float height, int slices, int stacks)
 
void imm_draw_cylinder_fill_3d (uint pos, float base, float top, float height, int slices, int stacks)
 
void imm_drawcircball (const float cent[3], float radius, const float tmat[4][4], uint pos)
 

Detailed Description

Utility drawing functions (rough equivalent to OpenGL's GLU)

Definition in file GPU_immediate_util.hh.

Function Documentation

◆ imm_cpack()

void imm_cpack ( uint x)

Pack color into 3 bytes

This define converts a numerical value to the equivalent 24-bit color, while not being endian-sensitive. On little-endian, this is the same as doing a 'naive' indexing, on big-endian, it is not!

Note
BGR format (i.e. 0xBBGGRR)...
Parameters
xcolor.

Definition at line 133 of file gpu_immediate_util.cc.

References immUniformColor3ub().

Referenced by blender::ed::curves::curve_draw_stroke_3d(), and curve_draw_stroke_3d().

◆ imm_draw_box_checker_2d()

◆ imm_draw_box_checker_2d_ex()

void imm_draw_box_checker_2d_ex ( float x1,
float y1,
float x2,
float y2,
const float color_primary[4],
const float color_secondary[4],
int checker_size )

◆ imm_draw_box_wire_2d()

◆ imm_draw_box_wire_3d()

void imm_draw_box_wire_3d ( uint pos,
float x1,
float y1,
float x2,
float y2 )

Definition at line 427 of file gpu_immediate_util.cc.

References GPU_PRIM_LINES, immBegin(), immEnd(), immVertex3f(), and pos.

Referenced by drawPropRange().

◆ imm_draw_circle_dashed_3d()

void imm_draw_circle_dashed_3d ( uint pos,
float x,
float y,
float radius,
int nsegments )

◆ imm_draw_circle_fill_2d()

void imm_draw_circle_fill_2d ( uint shdr_pos,
float x,
float y,
float radius,
int nsegments )

Draw a filled circle with the given radius. The circle is centered at x, y and drawn in the XY plane.

Parameters
shdr_posThe vertex attribute number for position.
xHorizontal center.
yVertical center.
radiusThe circle's radius.
nsegmentsThe number of segments to use in drawing (more = smoother).

Definition at line 174 of file gpu_immediate_util.cc.

References GPU_PRIM_TRI_FAN, and imm_draw_circle().

Referenced by annotation_draw_eraser(), blender::ed::sculpt_paint::grease_pencil_eraser_draw(), radial_control_paint_cursor(), radial_control_paint_tex(), and wm_gesture_draw_circle().

◆ imm_draw_circle_fill_3d()

◆ imm_draw_circle_fill_aspect_2d()

void imm_draw_circle_fill_aspect_2d ( uint shdr_pos,
float x,
float y,
float radius_x,
float radius_y,
int nsegments )

Definition at line 185 of file gpu_immediate_util.cc.

References GPU_PRIM_TRI_FAN, and imm_draw_circle().

Referenced by cage2d_draw_rect_corner_handles().

◆ imm_draw_circle_fill_aspect_3d()

void imm_draw_circle_fill_aspect_3d ( uint pos,
float x,
float y,
float radius_x,
float radius_y,
int nsegments )

Definition at line 403 of file gpu_immediate_util.cc.

References GPU_PRIM_TRI_FAN, imm_draw_circle_3D(), and pos.

◆ imm_draw_circle_partial_wire_2d()

void imm_draw_circle_partial_wire_2d ( uint pos,
float x,
float y,
float radius,
int nsegments,
float start,
float sweep )

Same as 'imm_draw_disk_partial_fill_2d', except it draws a wire arc.

Definition at line 238 of file gpu_immediate_util.cc.

References GPU_PRIM_LINE_STRIP, imm_draw_circle_partial(), and pos.

◆ imm_draw_circle_partial_wire_3d()

void imm_draw_circle_partial_wire_3d ( uint pos,
float x,
float y,
float z,
float radius,
int nsegments,
float start,
float sweep )

Definition at line 244 of file gpu_immediate_util.cc.

References GPU_PRIM_LINE_STRIP, imm_draw_circle_partial_3d(), pos, and z().

Referenced by dial_geom_draw().

◆ imm_draw_circle_wire_2d()

void imm_draw_circle_wire_2d ( uint shdr_pos,
float x,
float y,
float radius,
int nsegments )

◆ imm_draw_circle_wire_3d()

◆ imm_draw_circle_wire_aspect_2d()

void imm_draw_circle_wire_aspect_2d ( uint shdr_pos,
float x,
float y,
float radius_x,
float radius_y,
int nsegments )

Definition at line 179 of file gpu_immediate_util.cc.

References GPU_PRIM_LINE_LOOP, and imm_draw_circle().

Referenced by cage2d_draw_rect_corner_handles().

◆ imm_draw_circle_wire_aspect_3d()

void imm_draw_circle_wire_aspect_3d ( uint pos,
float x,
float y,
float radius_x,
float radius_y,
int nsegments )

Definition at line 387 of file gpu_immediate_util.cc.

References GPU_PRIM_LINE_LOOP, imm_draw_circle_3D(), and pos.

Referenced by cage2d_draw_circle_wire().

◆ imm_draw_cube_corners_3d()

void imm_draw_cube_corners_3d ( uint pos,
const float center[3],
const float aspect[3],
float factor )

◆ imm_draw_cube_fill_3d()

void imm_draw_cube_fill_3d ( uint pos,
const float center[3],
const float aspect[3] )

◆ imm_draw_cube_wire_3d()

void imm_draw_cube_wire_3d ( uint pos,
const float center[3],
const float aspect[3] )

◆ imm_draw_cylinder_fill_3d()

void imm_draw_cylinder_fill_3d ( uint pos,
float base,
float top,
float height,
int slices,
int stacks )

Definition at line 637 of file gpu_immediate_util.cc.

References cosf, float, GPU_PRIM_TRIS, immBegin(), immEnd(), immVertex3fv(), M_PI, pos, sinf, and v2.

Referenced by arrow_draw_geom().

◆ imm_draw_cylinder_fill_normal_3d()

void imm_draw_cylinder_fill_normal_3d ( uint pos,
uint nor,
float base,
float top,
float height,
int slices,
int stacks )

Draw a cylinder. Replacement for #gluCylinder.

Warning
Slow, better use it only if you no other choices.
Parameters
posThe vertex attribute number for position.
norThe vertex attribute number for normal.
baseSpecifies the radius of the cylinder at z = 0.
topSpecifies the radius of the cylinder at z = height.
heightSpecifies the height of the cylinder.
slicesSpecifies the number of subdivisions around the z axis.
stacksSpecifies the number of subdivisions along the z axis.

Definition at line 543 of file gpu_immediate_util.cc.

References cosf, float, GPU_PRIM_TRIS, immAttr3fv(), immBegin(), immEnd(), immVertex3fv(), M_PI, nor, normalize_v3(), pos, sinf, sub_v3_v3v3(), and v2.

◆ imm_draw_cylinder_wire_3d()

void imm_draw_cylinder_wire_3d ( uint pos,
float base,
float top,
float height,
int slices,
int stacks )

Definition at line 599 of file gpu_immediate_util.cc.

References cosf, float, GPU_PRIM_LINES, immBegin(), immEnd(), immVertex3fv(), M_PI, pos, sinf, and v2.

◆ imm_draw_disk_partial_fill_2d()

void imm_draw_disk_partial_fill_2d ( uint pos,
float x,
float y,
float rad_inner,
float rad_outer,
int nsegments,
float start,
float sweep )

Draw a filled arc with the given inner and outer radius. The circle is centered at x, y and drawn in the XY plane.

Note
Arguments are gluPartialDisk compatible.
Parameters
posThe vertex attribute number for position.
xHorizontal center.
yVertical center.
rad_innerThe inner circle's radius.
rad_outerThe outer circle's radius (can be zero).
nsegmentsThe number of segments to use in drawing (more = smoother).
startSpecifies the starting angle, in degrees, of the disk portion.
sweepSpecifies the sweep angle, in degrees, of the disk portion.

Definition at line 309 of file gpu_immediate_util.cc.

References GPU_PRIM_TRI_STRIP, imm_draw_disk_partial(), and pos.

Referenced by dial_ghostarc_draw(), and widget_progress_type_ring().

◆ imm_draw_disk_partial_fill_3d()

void imm_draw_disk_partial_fill_3d ( uint pos,
float x,
float y,
float z,
float rad_inner,
float rad_outer,
int nsegments,
float start,
float sweep )

◆ imm_drawcircball()

void imm_drawcircball ( const float cent[3],
float radius,
const float tmat[4][4],
uint pos )

◆ immRectf()

◆ immRectf_fast()

void immRectf_fast ( uint pos,
float x1,
float y1,
float x2,
float y2 )

Same as immRectf / immRecti but does not call immBegin / immEnd. To use with GPU_PRIM_TRIS.

Definition at line 74 of file gpu_immediate_util.cc.

References immVertex2f(), and pos.

Referenced by timeline_cache_draw_cached_segments(), and timeline_cache_draw_geometry_nodes().

◆ immRectf_fast_with_color()

void immRectf_fast_with_color ( uint pos,
uint col,
float x1,
float y1,
float x2,
float y2,
const float color[4] )

Definition at line 85 of file gpu_immediate_util.cc.

References col, immAttr4fv(), immVertex2f(), and pos.

◆ immRecti()

◆ immRecti_fast_with_color()

void immRecti_fast_with_color ( uint pos,
uint col,
int x1,
int y1,
int x2,
int y2,
const float color[4] )

Definition at line 103 of file gpu_immediate_util.cc.

References col, immAttr4fv(), immVertex2i(), and pos.