libgpac
Documentation of the core library of GPAC
visual_manager_3d_gl.c File Reference
#include "visual_manager.h"
#include "texturing.h"
#include <gpac/nodes_mpeg4.h>
#include "gl_inc.h"
+ Include dependency graph for visual_manager_3d_gl.c:

Macros

#define CHECK_GL_EXT(name)   ((strstr(ext, name) != NULL) ? 1 : 0)
 
#define GLES_VERSION_STRING   "#version 120 \n"
 
#define GLSL_PREFIX
 
#define DEL_SHADER(_a)   if (_a) { glDeleteShader(_a); _a = 0; }
 
#define DEL_PROGRAM(_a)   if (_a) { glDeleteProgram(_a); _a = 0; }
 

Functions

void gf_sc_load_opengl_extensions (GF_Compositor *compositor, Bool has_gl_context)
 
Bool visual_3d_compile_shader (GF_SHADERID shader_id, const char *name, const char *source)
 
static GF_SHADERID visual_3d_shader_from_source_file (const char *src_path, u32 shader_type)
 
static GF_SHADERID visual_3d_shader_with_flags (const char *src_path, u32 shader_type, u32 flags, u32 pixfmt)
 
void visual_3d_init_stereo_shaders (GF_VisualManager *visual)
 
static GF_GLProgInstancevisual_3d_build_program (GF_VisualManager *visual, u32 flags, u32 pix_fmt)
 
static Bool visual_3d_init_generic_shaders (GF_VisualManager *visual)
 
void visual_3d_init_shaders (GF_VisualManager *visual)
 
void visual_3d_reset_graphics (GF_VisualManager *visual)
 
void visual_3d_set_clipper_scissor (GF_VisualManager *visual, GF_TraverseState *tr_state)
 
static void visual_3d_load_matrix_shaders (GF_SHADERID program, Fixed *mat, const char *name)
 
GF_Err visual_3d_init_autostereo (GF_VisualManager *visual)
 
void visual_3d_end_auto_stereo_pass (GF_VisualManager *visual)
 
static void visual_3d_setup_quality (GF_VisualManager *visual)
 
void visual_3d_setup (GF_VisualManager *visual)
 
void visual_3d_set_background_state (GF_VisualManager *visual, Bool on)
 
void visual_3d_enable_antialias (GF_VisualManager *visual, Bool bOn)
 
void visual_3d_enable_depth_buffer (GF_VisualManager *visual, Bool on)
 
void visual_3d_set_viewport (GF_VisualManager *visual, GF_Rect vp)
 
void visual_3d_set_scissor (GF_VisualManager *visual, GF_Rect *vp)
 
void visual_3d_clear_depth (GF_VisualManager *visual)
 
static void visual_3d_draw_aabb_node (GF_TraverseState *tr_state, GF_Mesh *mesh, u32 prim_type, GF_Plane *fplanes, u32 *p_indices, AABBNode *n, void *idx_addr)
 
static void visual_3d_matrix_load (GF_VisualManager *visual, Fixed *mat)
 
static void visual_3d_update_matrices (GF_TraverseState *tr_state)
 
static void visual_3d_set_clippers (GF_VisualManager *visual, GF_TraverseState *tr_state)
 
static void visual_3d_reset_clippers (GF_VisualManager *visual)
 
void visual_3d_reset_lights (GF_VisualManager *visual)
 
static void visual_3d_set_lights (GF_VisualManager *visual)
 
void visual_3d_enable_fog (GF_VisualManager *visual)
 
static void visual_3d_do_draw_mesh (GF_TraverseState *tr_state, GF_Mesh *mesh)
 
static Bool visual_3d_bind_buffer (GF_Compositor *compositor, GF_Mesh *mesh, void **base_address)
 
static void visual_3d_update_matrices_shaders (GF_TraverseState *tr_state)
 
static void visual_3d_set_lights_shaders (GF_TraverseState *tr_state)
 
static void visual_3d_set_fog_shaders (GF_VisualManager *visual)
 
static void visual_3d_set_clippers_shaders (GF_VisualManager *visual, GF_TraverseState *tr_state)
 
GF_GLProgInstancevisual_3d_check_program_exists (GF_VisualManager *root_visual, u32 flags, u32 pix_fmt)
 
static void visual_3d_draw_mesh_shader_only (GF_TraverseState *tr_state, GF_Mesh *mesh)
 
static void visual_3d_draw_mesh (GF_TraverseState *tr_state, GF_Mesh *mesh)
 
static void visual_3d_set_debug_color (u32 col)
 
static void visual_3d_draw_normals (GF_TraverseState *tr_state, GF_Mesh *mesh)
 
void visual_3d_draw_aabb_nodeBounds (GF_TraverseState *tr_state, AABBNode *node)
 
void visual_3d_draw_bbox (GF_TraverseState *tr_state, GF_BBox *box, Bool is_debug)
 
static void visual_3d_draw_bounds (GF_TraverseState *tr_state, GF_Mesh *mesh)
 
void visual_3d_mesh_paint (GF_TraverseState *tr_state, GF_Mesh *mesh)
 
void visual_3d_mesh_hatch (GF_TraverseState *tr_state, GF_Mesh *mesh, u32 hatchStyle, SFColor hatchColor)
 
void visual_3d_mesh_strike (GF_TraverseState *tr_state, GF_Mesh *mesh, Fixed width, Fixed line_scale, u32 dash_style)
 
void visual_3d_clear (GF_VisualManager *visual, SFColor color, Fixed alpha)
 
void visual_3d_fill_rect (GF_VisualManager *visual, GF_Rect rc, SFColorRGBA color)
 
GF_Err compositor_3d_get_screen_buffer (GF_Compositor *compositor, GF_VideoSurface *fb, u32 depth_dump_mode)
 
GF_Err compositor_3d_release_screen_buffer (GF_Compositor *compositor, GF_VideoSurface *framebuffer)
 
GF_Err compositor_3d_get_offscreen_buffer (GF_Compositor *compositor, GF_VideoSurface *fb, u32 view_idx, u32 depth_dump_mode)
 
void visual_3d_point_sprite (GF_VisualManager *visual, Drawable *stack, GF_TextureHandler *txh, GF_TraverseState *tr_state)
 
GF_Err compositor_3d_setup_fbo (u32 width, u32 height, u32 *fbo_id, u32 *tx_id, u32 *depth_id)
 
void compositor_3d_delete_fbo (u32 *fbo_id, u32 *fbo_tx_id, u32 *fbo_depth_id, Bool keep_tx_id)
 
u32 compositor_3d_get_fbo_pixfmt ()
 
void compositor_3d_enable_fbo (GF_Compositor *compositor, Bool enable)
 
void visual_3d_clean_state (GF_VisualManager *visual)
 

Variables

static char * glsl_autostereo_vertex
 
static char * glsl_view_anaglyph
 
static char * glsl_view_columns
 
static char * glsl_view_rows
 
static char * glsl_view_5VSP19
 
static char * glsl_view_8VAlio
 
static GLubyte hatch_horiz []
 
static GLubyte hatch_vert []
 
static GLubyte hatch_up []
 
static GLubyte hatch_down []
 
static GLubyte hatch_cross []
 

Macro Definition Documentation

◆ CHECK_GL_EXT

#define CHECK_GL_EXT (   name)    ((strstr(ext, name) != NULL) ? 1 : 0)

! HORRIBLE HACK, but on my test devices, it seems that glClipPlanex is missing on the device but not in the SDK lib !!

◆ GLES_VERSION_STRING

#define GLES_VERSION_STRING   "#version 120 \n"

◆ GLSL_PREFIX

#define GLSL_PREFIX
Value:
"#ifdef GL_ES\n"\
"#ifdef GL_FRAGMENT_PRECISION_HIGH\n"\
"precision highp float;\n"\
"#else\n"\
"precision mediump float;\n"\
"#endif\n" \
"#endif\n"
#define GLES_VERSION_STRING
Definition: visual_manager_3d_gl.c:196

◆ DEL_SHADER

#define DEL_SHADER (   _a)    if (_a) { glDeleteShader(_a); _a = 0; }

◆ DEL_PROGRAM

#define DEL_PROGRAM (   _a)    if (_a) { glDeleteProgram(_a); _a = 0; }

Function Documentation

◆ gf_sc_load_opengl_extensions()

void gf_sc_load_opengl_extensions ( GF_Compositor *  compositor,
Bool  has_gl_context 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_compile_shader()

Bool visual_3d_compile_shader ( GF_SHADERID  shader_id,
const char *  name,
const char *  source 
)

parses (glShaderSource) and compiles (glCompileShader) shader source

Returns
GF_TRUE if successful
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_shader_from_source_file()

static GF_SHADERID visual_3d_shader_from_source_file ( const char *  src_path,
u32  shader_type 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_shader_with_flags()

static GF_SHADERID visual_3d_shader_with_flags ( const char *  src_path,
u32  shader_type,
u32  flags,
u32  pixfmt 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_init_stereo_shaders()

void visual_3d_init_stereo_shaders ( GF_VisualManager *  visual)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_build_program()

static GF_GLProgInstance* visual_3d_build_program ( GF_VisualManager *  visual,
u32  flags,
u32  pix_fmt 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_init_generic_shaders()

static Bool visual_3d_init_generic_shaders ( GF_VisualManager *  visual)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_init_shaders()

void visual_3d_init_shaders ( GF_VisualManager *  visual)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_reset_graphics()

void visual_3d_reset_graphics ( GF_VisualManager *  visual)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_set_clipper_scissor()

void visual_3d_set_clipper_scissor ( GF_VisualManager *  visual,
GF_TraverseState *  tr_state 
)
+ Here is the caller graph for this function:

◆ visual_3d_load_matrix_shaders()

static void visual_3d_load_matrix_shaders ( GF_SHADERID  program,
Fixed mat,
const char *  name 
)
static
+ Here is the caller graph for this function:

◆ visual_3d_init_autostereo()

GF_Err visual_3d_init_autostereo ( GF_VisualManager *  visual)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_end_auto_stereo_pass()

void visual_3d_end_auto_stereo_pass ( GF_VisualManager *  visual)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_setup_quality()

static void visual_3d_setup_quality ( GF_VisualManager *  visual)
static
+ Here is the caller graph for this function:

◆ visual_3d_setup()

void visual_3d_setup ( GF_VisualManager *  visual)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_set_background_state()

void visual_3d_set_background_state ( GF_VisualManager *  visual,
Bool  on 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_enable_antialias()

void visual_3d_enable_antialias ( GF_VisualManager *  visual,
Bool  bOn 
)
+ Here is the caller graph for this function:

◆ visual_3d_enable_depth_buffer()

void visual_3d_enable_depth_buffer ( GF_VisualManager *  visual,
Bool  on 
)
+ Here is the caller graph for this function:

◆ visual_3d_set_viewport()

void visual_3d_set_viewport ( GF_VisualManager *  visual,
GF_Rect  vp 
)
+ Here is the caller graph for this function:

◆ visual_3d_set_scissor()

void visual_3d_set_scissor ( GF_VisualManager *  visual,
GF_Rect vp 
)
+ Here is the caller graph for this function:

◆ visual_3d_clear_depth()

void visual_3d_clear_depth ( GF_VisualManager *  visual)
+ Here is the caller graph for this function:

◆ visual_3d_draw_aabb_node()

static void visual_3d_draw_aabb_node ( GF_TraverseState *  tr_state,
GF_Mesh mesh,
u32  prim_type,
GF_Plane fplanes,
u32 p_indices,
AABBNode n,
void *  idx_addr 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_matrix_load()

static void visual_3d_matrix_load ( GF_VisualManager *  visual,
Fixed mat 
)
static
+ Here is the caller graph for this function:

◆ visual_3d_update_matrices()

static void visual_3d_update_matrices ( GF_TraverseState *  tr_state)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_set_clippers()

static void visual_3d_set_clippers ( GF_VisualManager *  visual,
GF_TraverseState *  tr_state 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_reset_clippers()

static void visual_3d_reset_clippers ( GF_VisualManager *  visual)
static
+ Here is the caller graph for this function:

◆ visual_3d_reset_lights()

void visual_3d_reset_lights ( GF_VisualManager *  visual)
+ Here is the caller graph for this function:

◆ visual_3d_set_lights()

static void visual_3d_set_lights ( GF_VisualManager *  visual)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_enable_fog()

void visual_3d_enable_fog ( GF_VisualManager *  visual)
+ Here is the caller graph for this function:

◆ visual_3d_do_draw_mesh()

static void visual_3d_do_draw_mesh ( GF_TraverseState *  tr_state,
GF_Mesh mesh 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_bind_buffer()

static Bool visual_3d_bind_buffer ( GF_Compositor *  compositor,
GF_Mesh mesh,
void **  base_address 
)
static
+ Here is the caller graph for this function:

◆ visual_3d_update_matrices_shaders()

static void visual_3d_update_matrices_shaders ( GF_TraverseState *  tr_state)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_set_lights_shaders()

static void visual_3d_set_lights_shaders ( GF_TraverseState *  tr_state)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_set_fog_shaders()

static void visual_3d_set_fog_shaders ( GF_VisualManager *  visual)
static
+ Here is the caller graph for this function:

◆ visual_3d_set_clippers_shaders()

static void visual_3d_set_clippers_shaders ( GF_VisualManager *  visual,
GF_TraverseState *  tr_state 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_check_program_exists()

GF_GLProgInstance* visual_3d_check_program_exists ( GF_VisualManager *  root_visual,
u32  flags,
u32  pix_fmt 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_draw_mesh_shader_only()

static void visual_3d_draw_mesh_shader_only ( GF_TraverseState *  tr_state,
GF_Mesh mesh 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_draw_mesh()

static void visual_3d_draw_mesh ( GF_TraverseState *  tr_state,
GF_Mesh mesh 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_set_debug_color()

static void visual_3d_set_debug_color ( u32  col)
static
+ Here is the caller graph for this function:

◆ visual_3d_draw_normals()

static void visual_3d_draw_normals ( GF_TraverseState *  tr_state,
GF_Mesh mesh 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_draw_aabb_nodeBounds()

void visual_3d_draw_aabb_nodeBounds ( GF_TraverseState *  tr_state,
AABBNode node 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_draw_bbox()

void visual_3d_draw_bbox ( GF_TraverseState *  tr_state,
GF_BBox box,
Bool  is_debug 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_draw_bounds()

static void visual_3d_draw_bounds ( GF_TraverseState *  tr_state,
GF_Mesh mesh 
)
static
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_mesh_paint()

void visual_3d_mesh_paint ( GF_TraverseState *  tr_state,
GF_Mesh mesh 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_mesh_hatch()

void visual_3d_mesh_hatch ( GF_TraverseState *  tr_state,
GF_Mesh mesh,
u32  hatchStyle,
SFColor  hatchColor 
)
+ Here is the caller graph for this function:

◆ visual_3d_mesh_strike()

void visual_3d_mesh_strike ( GF_TraverseState *  tr_state,
GF_Mesh mesh,
Fixed  width,
Fixed  line_scale,
u32  dash_style 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_clear()

void visual_3d_clear ( GF_VisualManager *  visual,
SFColor  color,
Fixed  alpha 
)
+ Here is the caller graph for this function:

◆ visual_3d_fill_rect()

void visual_3d_fill_rect ( GF_VisualManager *  visual,
GF_Rect  rc,
SFColorRGBA  color 
)
+ Here is the caller graph for this function:

◆ compositor_3d_get_screen_buffer()

GF_Err compositor_3d_get_screen_buffer ( GF_Compositor *  compositor,
GF_VideoSurface fb,
u32  depth_dump_mode 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ compositor_3d_release_screen_buffer()

GF_Err compositor_3d_release_screen_buffer ( GF_Compositor *  compositor,
GF_VideoSurface framebuffer 
)
+ Here is the caller graph for this function:

◆ compositor_3d_get_offscreen_buffer()

GF_Err compositor_3d_get_offscreen_buffer ( GF_Compositor *  compositor,
GF_VideoSurface fb,
u32  view_idx,
u32  depth_dump_mode 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ visual_3d_point_sprite()

void visual_3d_point_sprite ( GF_VisualManager *  visual,
Drawable *  stack,
GF_TextureHandler txh,
GF_TraverseState *  tr_state 
)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ compositor_3d_setup_fbo()

GF_Err compositor_3d_setup_fbo ( u32  width,
u32  height,
u32 fbo_id,
u32 tx_id,
u32 depth_id 
)
+ Here is the caller graph for this function:

◆ compositor_3d_delete_fbo()

void compositor_3d_delete_fbo ( u32 fbo_id,
u32 fbo_tx_id,
u32 fbo_depth_id,
Bool  keep_tx_id 
)
+ Here is the caller graph for this function:

◆ compositor_3d_get_fbo_pixfmt()

u32 compositor_3d_get_fbo_pixfmt ( )
+ Here is the caller graph for this function:

◆ compositor_3d_enable_fbo()

void compositor_3d_enable_fbo ( GF_Compositor *  compositor,
Bool  enable 
)
+ Here is the caller graph for this function:

◆ visual_3d_clean_state()

void visual_3d_clean_state ( GF_VisualManager *  visual)
+ Here is the caller graph for this function:

Variable Documentation

◆ glsl_autostereo_vertex

char* glsl_autostereo_vertex
static
Initial value:
attribute vec4 gfVertex;\
attribute vec2 gfTextureCoordinates;\
uniform mat4 gfProjectionMatrix;\
varying vec2 TexCoord;\
void main(void)\
{\
TexCoord = gfTextureCoordinates;\
gl_Position = gfProjectionMatrix * gfVertex;\
}"
#define GLSL_PREFIX
Definition: visual_manager_3d_gl.c:199

◆ glsl_view_anaglyph

char* glsl_view_anaglyph
static
Initial value:
uniform sampler2D gfView1;\
uniform sampler2D gfView2;\
varying vec2 TexCoord;\
void main(void) \
{\
vec4 col1 = texture2D(gfView1, TexCoord.st); \
vec4 col2 = texture2D(gfView2, TexCoord.st); \
gl_FragColor.r = col1.r;\
gl_FragColor.g = col2.g;\
gl_FragColor.b = col2.b;\
}"

◆ glsl_view_columns

char* glsl_view_columns
static
Initial value:
uniform sampler2D gfView1;\
uniform sampler2D gfView2;\
varying vec2 TexCoord;\
void main(void) \
{\
if ( int( mod(gl_FragCoord.x, 2.0) ) == 0) \
gl_FragColor = texture2D(gfView1, TexCoord.st); \
else \
gl_FragColor = texture2D(gfView2, TexCoord.st); \
}"

◆ glsl_view_rows

char* glsl_view_rows
static
Initial value:
uniform sampler2D gfView1;\
uniform sampler2D gfView2;\
varying vec2 TexCoord;\
void main(void) \
{\
if ( int( mod(gl_FragCoord.y, 2.0) ) == 0) \
gl_FragColor = texture2D(gfView1, TexCoord.st); \
else \
gl_FragColor = texture2D(gfView2, TexCoord.st); \
}"

◆ glsl_view_5VSP19

char* glsl_view_5VSP19
static

◆ glsl_view_8VAlio

char* glsl_view_8VAlio
static

◆ hatch_horiz

GLubyte hatch_horiz[]
static
Initial value:
= {
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff
}

◆ hatch_vert

GLubyte hatch_vert[]
static
Initial value:
= {
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa
}

◆ hatch_up

GLubyte hatch_up[]
static
Initial value:
= {
0xc0, 0xc0, 0xc0, 0xc0, 0x30, 0x30, 0x30, 0x30,
0x0c, 0x0c, 0x0c, 0x0c, 0x03, 0x03, 0x03, 0x03,
0xc0, 0xc0, 0xc0, 0xc0, 0x30, 0x30, 0x30, 0x30,
0x0c, 0x0c, 0x0c, 0x0c, 0x03, 0x03, 0x03, 0x03,
0xc0, 0xc0, 0xc0, 0xc0, 0x30, 0x30, 0x30, 0x30,
0x0c, 0x0c, 0x0c, 0x0c, 0x03, 0x03, 0x03, 0x03,
0xc0, 0xc0, 0xc0, 0xc0, 0x30, 0x30, 0x30, 0x30,
0x0c, 0x0c, 0x0c, 0x0c, 0x03, 0x03, 0x03, 0x03,
0xc0, 0xc0, 0xc0, 0xc0, 0x30, 0x30, 0x30, 0x30,
0x0c, 0x0c, 0x0c, 0x0c, 0x03, 0x03, 0x03, 0x03,
0xc0, 0xc0, 0xc0, 0xc0, 0x30, 0x30, 0x30, 0x30,
0x0c, 0x0c, 0x0c, 0x0c, 0x03, 0x03, 0x03, 0x03,
0xc0, 0xc0, 0xc0, 0xc0, 0x30, 0x30, 0x30, 0x30,
0x0c, 0x0c, 0x0c, 0x0c, 0x03, 0x03, 0x03, 0x03,
0xc0, 0xc0, 0xc0, 0xc0, 0x30, 0x30, 0x30, 0x30,
0x0c, 0x0c, 0x0c, 0x0c, 0x03, 0x03, 0x03, 0x03
}

◆ hatch_down

GLubyte hatch_down[]
static
Initial value:
= {
0x03, 0x03, 0x03, 0x03, 0x0c, 0x0c, 0x0c, 0x0c,
0x30, 0x30, 0x30, 0x30, 0xc0, 0xc0, 0xc0, 0xc0,
0x03, 0x03, 0x03, 0x03, 0x0c, 0x0c, 0x0c, 0x0c,
0x30, 0x30, 0x30, 0x30, 0xc0, 0xc0, 0xc0, 0xc0,
0x03, 0x03, 0x03, 0x03, 0x0c, 0x0c, 0x0c, 0x0c,
0x30, 0x30, 0x30, 0x30, 0xc0, 0xc0, 0xc0, 0xc0,
0x03, 0x03, 0x03, 0x03, 0x0c, 0x0c, 0x0c, 0x0c,
0x30, 0x30, 0x30, 0x30, 0xc0, 0xc0, 0xc0, 0xc0,
0x03, 0x03, 0x03, 0x03, 0x0c, 0x0c, 0x0c, 0x0c,
0x30, 0x30, 0x30, 0x30, 0xc0, 0xc0, 0xc0, 0xc0,
0x03, 0x03, 0x03, 0x03, 0x0c, 0x0c, 0x0c, 0x0c,
0x30, 0x30, 0x30, 0x30, 0xc0, 0xc0, 0xc0, 0xc0,
0x03, 0x03, 0x03, 0x03, 0x0c, 0x0c, 0x0c, 0x0c,
0x30, 0x30, 0x30, 0x30, 0xc0, 0xc0, 0xc0, 0xc0,
0x03, 0x03, 0x03, 0x03, 0x0c, 0x0c, 0x0c, 0x0c,
0x30, 0x30, 0x30, 0x30, 0xc0, 0xc0, 0xc0, 0xc0
}

◆ hatch_cross

GLubyte hatch_cross[]
static
Initial value:
= {
0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c
}