From bad785cce4c62d1f84c56a7417678a9dce47d4b7 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 30 Jun 2011 01:40:20 +0000 Subject: [PATCH 01/22] minor edits, no functional change. --- source/blender/modifiers/intern/MOD_displace.c | 14 ++++---------- source/blender/render/extern/include/RE_pipeline.h | 2 +- .../blender/render/intern/source/convertblender.c | 10 ++++------ 3 files changed, 9 insertions(+), 17 deletions(-) diff --git a/source/blender/modifiers/intern/MOD_displace.c b/source/blender/modifiers/intern/MOD_displace.c index 02845ecaab7..01f1b6fb2a7 100644 --- a/source/blender/modifiers/intern/MOD_displace.c +++ b/source/blender/modifiers/intern/MOD_displace.c @@ -172,6 +172,7 @@ static void displaceModifier_do( MDeformVert *dvert = NULL; int defgrp_index; float (*tex_co)[3]; + float weight= 1.0f; /* init value unused but some compilers may complain */ if(!dmd->texture) return; if(dmd->strength == 0.0f) return; @@ -189,17 +190,10 @@ static void displaceModifier_do( for(i = 0; i < numVerts; ++i) { TexResult texres; float delta = 0, strength = dmd->strength; - MDeformWeight *def_weight = NULL; if(dvert) { - int j; - for(j = 0; j < dvert[i].totweight; ++j) { - if(dvert[i].dw[j].def_nr == defgrp_index) { - def_weight = &dvert[i].dw[j]; - break; - } - } - if(!def_weight || def_weight->weight==0.0f) continue; + weight= defvert_find_weight(dvert + i, defgrp_index); + if(weight == 0.0f) continue; } texres.nor = NULL; @@ -207,7 +201,7 @@ static void displaceModifier_do( delta = texres.tin - dmd->midlevel; - if(def_weight) strength *= def_weight->weight; + if(dvert) strength *= weight; delta *= strength; CLAMP(delta, -10000, 10000); diff --git a/source/blender/render/extern/include/RE_pipeline.h b/source/blender/render/extern/include/RE_pipeline.h index 6debe8c9bc3..d9ed83a00b2 100644 --- a/source/blender/render/extern/include/RE_pipeline.h +++ b/source/blender/render/extern/include/RE_pipeline.h @@ -266,7 +266,7 @@ void RE_zbuf_accumulate_vecblur(struct NodeBlurData *nbd, int xsize, int ysize, #define RE_BAKE_ALPHA 11 #define RE_BAKE_EMIT 12 -void RE_Database_Baking(struct Render *re, struct Main *bmain, struct Scene *scene, unsigned int lay, int type, struct Object *actob); +void RE_Database_Baking(struct Render *re, struct Main *bmain, struct Scene *scene, unsigned int lay, const int type, struct Object *actob); void RE_DataBase_GetView(struct Render *re, float mat[][4]); void RE_GetCameraWindow(struct Render *re, struct Object *camera, int frame, float mat[][4]); diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index a4ac92d394c..da7cdc307c6 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -5680,13 +5680,14 @@ void RE_Database_FromScene_Vectors(Render *re, Main *bmain, Scene *sce, unsigned RE_BAKE_DISPLACEMENT:for baking, no lamps, only selected objects RE_BAKE_SHADOW: for baking, only shadows, but all objects */ -void RE_Database_Baking(Render *re, Main *bmain, Scene *scene, unsigned int lay, int type, Object *actob) +void RE_Database_Baking(Render *re, Main *bmain, Scene *scene, unsigned int lay, const int type, Object *actob) { Object *camera; float mat[4][4]; float amb[3]; - int onlyselected, nolamps; - + const short onlyselected= !ELEM3(type, RE_BAKE_LIGHT, RE_BAKE_ALL, RE_BAKE_SHADOW); + const short nolamps= ELEM3(type, RE_BAKE_NORMALS, RE_BAKE_TEXTURE, RE_BAKE_DISPLACEMENT); + re->main= bmain; re->scene= scene; re->lay= lay; @@ -5755,9 +5756,6 @@ void RE_Database_Baking(Render *re, Main *bmain, Scene *scene, unsigned int lay, set_node_shader_lamp_loop(shade_material_loop); /* MAKE RENDER DATA */ - nolamps= !ELEM3(type, RE_BAKE_LIGHT, RE_BAKE_ALL, RE_BAKE_SHADOW); - onlyselected= ELEM3(type, RE_BAKE_NORMALS, RE_BAKE_TEXTURE, RE_BAKE_DISPLACEMENT); - database_init_objects(re, lay, nolamps, onlyselected, actob, 0); set_material_lightgroups(re); From acc69b87d72ecd219185b98731ab351e7b9130d1 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 30 Jun 2011 02:02:16 +0000 Subject: [PATCH 02/22] fix/workaround [#27807] bake malloc loop if Deep Shadow && strand && children render strands use the window matrix and window size which were both zero while baking, this caused divides by 0 and eternal malloc loop. So set unit window matrix and dummy view size. This is more a workaround then a fix but avoids crashing. --- source/blender/render/intern/source/convertblender.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index da7cdc307c6..2c9aa4dece5 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -5737,7 +5737,15 @@ void RE_Database_Baking(Render *re, Main *bmain, Scene *scene, unsigned int lay, unit_m4(mat); RE_SetView(re, mat); } - + copy_m3_m4(re->imat, re->viewinv); + + /* TODO: deep shadow maps + baking + strands */ + /* strands use the window matrix and view size, there is to correct + * window matrix but at least avoids malloc and crash loop [#27807] */ + unit_m4(re->winmat); + re->winx= re->winy= 256; + /* done setting dummy values */ + init_render_world(re); /* do first, because of ambient. also requires re->osa set correct */ if(re->r.mode & R_RAYTRACE) { init_render_qmcsampler(re); From c490baceedec99fdd3b6f5233be721b56185d1e3 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 30 Jun 2011 02:52:13 +0000 Subject: [PATCH 03/22] minor change in logic for adding a new hook, ignore zero weight verts in a vgroup. --- source/blender/editors/object/object_hook.c | 29 ++++++++++----------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/source/blender/editors/object/object_hook.c b/source/blender/editors/object/object_hook.c index 2d547da41f6..460b287724e 100644 --- a/source/blender/editors/object/object_hook.c +++ b/source/blender/editors/object/object_hook.c @@ -85,7 +85,7 @@ static int return_editmesh_indexar(EditMesh *em, int *tot, int **indexar, float *indexar= index= MEM_mallocN(4*totvert, "hook indexar"); *tot= totvert; nr= 0; - cent[0]= cent[1]= cent[2]= 0.0; + zero_v3(cent); for(eve= em->verts.first; eve; eve= eve->next) { if(eve->f & SELECT) { @@ -102,30 +102,29 @@ static int return_editmesh_indexar(EditMesh *em, int *tot, int **indexar, float static int return_editmesh_vgroup(Object *obedit, EditMesh *em, char *name, float *cent) { - MDeformVert *dvert; - EditVert *eve; - int i, totvert=0; - - cent[0]= cent[1]= cent[2]= 0.0; - + zero_v3(cent); + if(obedit->actdef) { - + const int defgrp_index= obedit->actdef-1; + int i, totvert=0; + + MDeformVert *dvert; + EditVert *eve; + /* find the vertices */ for(eve= em->verts.first; eve; eve= eve->next) { dvert= CustomData_em_get(&em->vdata, eve->data, CD_MDEFORMVERT); if(dvert) { - for(i=0; itotweight; i++){ - if(dvert->dw[i].def_nr == (obedit->actdef-1)) { - totvert++; - add_v3_v3(cent, eve->co); - } + if(defvert_find_weight(dvert, defgrp_index) > 0.0f) { + add_v3_v3(cent, eve->co); + totvert++; } } } if(totvert) { - bDeformGroup *defGroup = BLI_findlink(&obedit->defbase, obedit->actdef-1); - strcpy(name, defGroup->name); + bDeformGroup *dg = BLI_findlink(&obedit->defbase, defgrp_index); + BLI_strncpy(name, dg->name, sizeof(dg->name)); mul_v3_fl(cent, 1.0f/(float)totvert); return 1; } From 5c3e73fd569604d19d579ce74eb5fa8ed3fb0a06 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 30 Jun 2011 03:04:39 +0000 Subject: [PATCH 04/22] replace inline loops for get_weights_array with calls to defvert_find_weight() --- source/blender/blenkernel/intern/key.c | 19 +++++-------------- source/blender/editors/object/object_hook.c | 1 + 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/source/blender/blenkernel/intern/key.c b/source/blender/blenkernel/intern/key.c index 4b532362cd8..78bfe79bf9b 100644 --- a/source/blender/blenkernel/intern/key.c +++ b/source/blender/blenkernel/intern/key.c @@ -63,6 +63,7 @@ #include "BKE_library.h" #include "BKE_main.h" #include "BKE_object.h" +#include "BKE_deform.h" #include "RNA_access.h" @@ -1005,7 +1006,7 @@ static float *get_weights_array(Object *ob, char *vgroup) MDeformVert *dvert= NULL; EditMesh *em= NULL; EditVert *eve; - int totvert= 0, index= 0; + int totvert= 0, defgrp_index= 0; /* no vgroup string set? */ if(vgroup[0]==0) return NULL; @@ -1028,7 +1029,7 @@ static float *get_weights_array(Object *ob, char *vgroup) if(dvert==NULL) return NULL; /* find the group (weak loop-in-loop) */ - index= defgroup_name_index(ob, vgroup); + defgrp_index= defgroup_name_index(ob, vgroup); if(index >= 0) { float *weights; int i, j; @@ -1040,23 +1041,13 @@ static float *get_weights_array(Object *ob, char *vgroup) dvert= CustomData_em_get(&em->vdata, eve->data, CD_MDEFORMVERT); if(dvert) { - for(j=0; jtotweight; j++) { - if(dvert->dw[j].def_nr == index) { - weights[i]= dvert->dw[j].weight; - break; - } - } + weights[i]= defvert_find_weight(dvert, defgrp_index); } } } else { for(i=0; i < totvert; i++, dvert++) { - for(j=0; jtotweight; j++) { - if(dvert->dw[j].def_nr == index) { - weights[i]= dvert->dw[j].weight; - break; - } - } + weights[i]= defvert_find_weight(dvert, defgrp_index); } } diff --git a/source/blender/editors/object/object_hook.c b/source/blender/editors/object/object_hook.c index 460b287724e..4dc944db28c 100644 --- a/source/blender/editors/object/object_hook.c +++ b/source/blender/editors/object/object_hook.c @@ -56,6 +56,7 @@ #include "BKE_object.h" #include "BKE_report.h" #include "BKE_scene.h" +#include "BKE_deform.h" #include "RNA_define.h" #include "RNA_access.h" From 66b565a376c1fea6117f4432a1f7ba77adcdec49 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 30 Jun 2011 04:32:59 +0000 Subject: [PATCH 05/22] improve error report [#27775] External Image Editor Preference does not work also correct tooltip typo. --- release/scripts/startup/bl_operators/image.py | 2 +- source/blender/editors/object/object_edit.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/release/scripts/startup/bl_operators/image.py b/release/scripts/startup/bl_operators/image.py index 462db3a2c5e..1e5217217dd 100644 --- a/release/scripts/startup/bl_operators/image.py +++ b/release/scripts/startup/bl_operators/image.py @@ -60,7 +60,7 @@ class EditExternally(bpy.types.Operator): filepath = bpy.path.abspath(self.filepath) if not os.path.exists(filepath): - self.report({'ERROR'}, "Image path %r not found." % filepath) + self.report({'ERROR'}, "Image path %r not found, image may be packed or unsaved." % filepath) return {'CANCELLED'} cmd = self._editor_guess(context) + [filepath] diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 2dfb799f1ad..29a740affc5 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -1704,7 +1704,7 @@ void OBJECT_OT_shade_smooth(wmOperatorType *ot) { /* identifiers */ ot->name= "Shade Smooth"; - ot->description= "Display faces 'smooth' (using vertext normals)"; + ot->description= "Display faces 'smooth' (using vertex normals)"; ot->idname= "OBJECT_OT_shade_smooth"; /* api callbacks */ From 85dc00e2543526e39112812d66dd251fb9592c62 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Thu, 30 Jun 2011 07:35:41 +0000 Subject: [PATCH 06/22] Fix for undefined "index" in key.c. Probably forgotten to be remaned to defgrp_index after recent commit here. --- source/blender/blenkernel/intern/key.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/intern/key.c b/source/blender/blenkernel/intern/key.c index 78bfe79bf9b..cf5fe1c3740 100644 --- a/source/blender/blenkernel/intern/key.c +++ b/source/blender/blenkernel/intern/key.c @@ -1030,7 +1030,7 @@ static float *get_weights_array(Object *ob, char *vgroup) /* find the group (weak loop-in-loop) */ defgrp_index= defgroup_name_index(ob, vgroup); - if(index >= 0) { + if(defgrp_index >= 0) { float *weights; int i, j; From f2c7cb0912faada4a38791afa7c801b92586c4ca Mon Sep 17 00:00:00 2001 From: Lukas Toenne Date: Thu, 30 Jun 2011 12:37:59 +0000 Subject: [PATCH 07/22] When duplicating nodes in a tree, also copy the links between selected nodes, as well as input links from non-selected to selected nodes. --- source/blender/editors/space_node/node_edit.c | 57 ++++++++++++++++--- 1 file changed, 50 insertions(+), 7 deletions(-) diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 71dd7b02e1c..a6a60035aa7 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -2004,19 +2004,16 @@ static int node_duplicate_exec(bContext *C, wmOperator *UNUSED(op)) { SpaceNode *snode= CTX_wm_space_node(C); bNodeTree *ntree= snode->edittree; - bNode *node, *newnode, *last; + bNode *node, *newnode, *lastnode; + bNodeLink *link, *newlink, *lastlink; ED_preview_kill_jobs(C); - last = ntree->nodes.last; + lastnode = ntree->nodes.last; for(node= ntree->nodes.first; node; node= node->next) { if(node->flag & SELECT) { newnode = nodeCopyNode(ntree, node); - /* deselect old node, select the copy instead */ - node->flag &= ~(NODE_SELECT|NODE_ACTIVE); - newnode->flag |= NODE_SELECT; - if(newnode->id) { /* simple id user adjustment, node internal functions dont touch this * but operators and readfile.c do. */ @@ -2027,7 +2024,53 @@ static int node_duplicate_exec(bContext *C, wmOperator *UNUSED(op)) } /* make sure we don't copy new nodes again! */ - if (node==last) + if (node==lastnode) + break; + } + + /* copy links between selected nodes + * NB: this depends on correct node->new_node and sock->new_sock pointers from above copy! + */ + lastlink = ntree->links.last; + for (link=ntree->links.first; link; link=link->next) { + /* this creates new links between copied nodes, + * as well as input links from unselected (when fromnode==NULL) ! + */ + if (link->tonode && (link->tonode->flag & NODE_SELECT)) { + newlink = MEM_callocN(sizeof(bNodeLink), "bNodeLink"); + newlink->flag = link->flag; + newlink->tonode = link->tonode->new_node; + newlink->tosock = link->tosock->new_sock; + if (link->fromnode && (link->fromnode->flag & NODE_SELECT)) { + newlink->fromnode = link->fromnode->new_node; + newlink->fromsock = link->fromsock->new_sock; + } + else { + /* input node not copied, this keeps the original input linked */ + newlink->fromnode = link->fromnode; + newlink->fromsock = link->fromsock; + } + + BLI_addtail(&ntree->links, newlink); + } + + /* make sure we don't copy new links again! */ + if (link==lastlink) + break; + } + + /* deselect old nodes, select the copies instead */ + for(node= ntree->nodes.first; node; node= node->next) { + if(node->flag & SELECT) { + /* has been set during copy above */ + newnode = node->new_node; + + node->flag &= ~(NODE_SELECT|NODE_ACTIVE); + newnode->flag |= NODE_SELECT; + } + + /* make sure we don't copy new nodes again! */ + if (node==lastnode) break; } From 06fcf2e6ef7a1483021a43dab3a5c1920a2ef9b4 Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Thu, 30 Jun 2011 15:02:03 +0000 Subject: [PATCH 08/22] Todo item: Closed regions didn't always draw the (+) icon right place, confusing for users. Next to that, I think this icon is using a bad metaphor or visual language, Illustrated best if you close a header in outliner or buttons. Icons are UI widgets, for screen/editor layouts different controls can be stylized. My preference is something that aligns visually to the seperators between regions; for testing and hacking pleasure I've added two quick versions, a small tabbish thing and a triangle. Enable these with debug menu, ALT+CTRL+D, values 1 or 2. This is simply drawn with opengl now. An image for it can be made as well. Previews: http://www.blender.org/bf/closed_regions1.png http://www.blender.org/bf/closed_regions2.png http://www.blender.org/bf/closed_regions3.png There's other design ideas to explore as well, like making region deviders 8-10 pixels wide, with a 'drag me' dot on it or so. That takes some screen estate though, and will require to add big editor-dividers too... Fun stuff for the mockup-mafia to check on, we have time :) --- .../editors/interface/interface_draw.c | 10 +- .../editors/interface/interface_widgets.c | 2 +- source/blender/editors/screen/area.c | 218 ++++++++++++++++-- source/blender/editors/screen/screen_edit.c | 2 +- 4 files changed, 205 insertions(+), 27 deletions(-) diff --git a/source/blender/editors/interface/interface_draw.c b/source/blender/editors/interface/interface_draw.c index c7f11116834..97299a6a766 100644 --- a/source/blender/editors/interface/interface_draw.c +++ b/source/blender/editors/interface/interface_draw.c @@ -142,13 +142,13 @@ void uiDrawBox(int mode, float minx, float miny, float maxx, float maxy, float r static void round_box_shade_col(float *col1, float *col2, float fac) { - float col[3]; + float col[4]; col[0]= (fac*col1[0] + (1.0f-fac)*col2[0]); col[1]= (fac*col1[1] + (1.0f-fac)*col2[1]); col[2]= (fac*col1[2] + (1.0f-fac)*col2[2]); - - glColor3fv(col); + col[3]= (fac*col1[3] + (1.0f-fac)*col2[3]); + glColor4fv(col); } @@ -159,7 +159,7 @@ void uiDrawBoxShade(int mode, float minx, float miny, float maxx, float maxy, fl float vec[7][2]= {{0.195, 0.02}, {0.383, 0.067}, {0.55, 0.169}, {0.707, 0.293}, {0.831, 0.45}, {0.924, 0.617}, {0.98, 0.805}}; float div= maxy-miny; - float coltop[3], coldown[3], color[4]; + float coltop[4], coldown[4], color[4]; int a; /* mult */ @@ -173,9 +173,11 @@ void uiDrawBoxShade(int mode, float minx, float miny, float maxx, float maxy, fl coltop[0]= color[0]+shadetop; if(coltop[0]>1.0f) coltop[0]= 1.0f; coltop[1]= color[1]+shadetop; if(coltop[1]>1.0f) coltop[1]= 1.0f; coltop[2]= color[2]+shadetop; if(coltop[2]>1.0f) coltop[2]= 1.0f; + coltop[3]= color[3]; coldown[0]= color[0]+shadedown; if(coldown[0]<0.0f) coldown[0]= 0.0f; coldown[1]= color[1]+shadedown; if(coldown[1]<0.0f) coldown[1]= 0.0f; coldown[2]= color[2]+shadedown; if(coldown[2]<0.0f) coldown[2]= 0.0f; + coldown[3]= color[3]; glShadeModel(GL_SMOOTH); glBegin(mode); diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index b6e255b6758..25a64994f5c 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -180,7 +180,7 @@ void ui_draw_anti_tria(float x1, float y1, float x2, float y2, float x3, float y glEnable(GL_BLEND); glGetFloatv(GL_CURRENT_COLOR, color); - color[3]= 0.125; + color[3]*= 0.125; glColor4fv(color); /* for each AA step */ diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index 4d531e78ec0..82986dfbcc4 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -188,17 +188,12 @@ static void area_draw_azone(short x1, short y1, short x2, short y2) } -static void region_draw_azone(AZone *az) +static void region_draw_azone_icon(AZone *az) { GLUquadricObj *qobj = NULL; short midx = az->x1 + (az->x2 - az->x1)/2; short midy = az->y1 + (az->y2 - az->y1)/2; - - if(az->ar==NULL) return; - - /* only display action zone icons when the region is hidden */ - if (!(az->ar->flag & RGN_FLAG_HIDDEN)) return; - + qobj = gluNewQuadric(); glPushMatrix(); @@ -227,6 +222,79 @@ static void region_draw_azone(AZone *az) sdrawline(midx-2, midy, midx+3, midy); } +static void region_draw_azone_tab(AZone *az) +{ + float col[3]; + + glEnable(GL_BLEND); + UI_GetThemeColor3fv(TH_HEADER, col); + glColor4f(col[0], col[1], col[2], 0.5f); + + /* add code to draw region hidden as 'too small' */ + switch(az->edge) { + case AE_TOP_TO_BOTTOMRIGHT: + uiSetRoundBox(3 + 16); + + uiDrawBoxShade(GL_POLYGON, (float)az->x1, (float)az->y1, (float)az->x2, (float)az->y2, 4.0f, -0.3f, 0.05f); + glColor4ub(0, 0, 0, 255); + uiRoundRect((float)az->x1, 0.3f+(float)az->y1, (float)az->x2, 0.3f+(float)az->y2, 4.0f); + break; + case AE_BOTTOM_TO_TOPLEFT: + uiSetRoundBox(12 + 16); + + uiDrawBoxShade(GL_POLYGON, (float)az->x1, (float)az->y1, (float)az->x2, (float)az->y2, 4.0f, -0.3f, 0.05f); + glColor4ub(0, 0, 0, 255); + uiRoundRect((float)az->x1, 0.3f+(float)az->y1, (float)az->x2, 0.3f+(float)az->y2, 4.0f); + break; + case AE_LEFT_TO_TOPRIGHT: + uiSetRoundBox(9 + 16); + + uiDrawBoxShade(GL_POLYGON, (float)az->x1, (float)az->y1, (float)az->x2, (float)az->y2, 4.0f, -0.3f, 0.05f); + glColor4ub(0, 0, 0, 255); + uiRoundRect((float)az->x1, (float)az->y1, (float)az->x2, (float)az->y2, 4.0f); + break; + case AE_RIGHT_TO_TOPLEFT: + uiSetRoundBox(6 + 16); + + uiDrawBoxShade(GL_POLYGON, (float)az->x1, (float)az->y1, (float)az->x2, (float)az->y2, 4.0f, -0.3f, 0.05f); + glColor4ub(0, 0, 0, 255); + uiRoundRect((float)az->x1, (float)az->y1, (float)az->x2, (float)az->y2, 4.0f); + break; + } + + glDisable(GL_BLEND); +} + +static void region_draw_azone_tria(AZone *az) +{ + extern void ui_draw_anti_tria(float x1, float y1, float x2, float y2, float x3, float y3); /* xxx temp */ + + glEnable(GL_BLEND); + //UI_GetThemeColor3fv(TH_HEADER, col); + glColor4f(0.0f, 0.0f, 0.0f, 0.35f); + + /* add code to draw region hidden as 'too small' */ + switch(az->edge) { + case AE_TOP_TO_BOTTOMRIGHT: + ui_draw_anti_tria((float)az->x1, (float)az->y1, (float)az->x2, (float)az->y1, (float)(az->x1+az->x2)/2, (float)az->y2); + break; + + case AE_BOTTOM_TO_TOPLEFT: + ui_draw_anti_tria((float)az->x1, (float)az->y2, (float)az->x2, (float)az->y2, (float)(az->x1+az->x2)/2, (float)az->y1); + break; + + case AE_LEFT_TO_TOPRIGHT: + ui_draw_anti_tria((float)az->x2, (float)az->y1, (float)az->x2, (float)az->y2, (float)az->x1, (float)(az->y1+az->y2)/2); + break; + + case AE_RIGHT_TO_TOPLEFT: + ui_draw_anti_tria((float)az->x1, (float)az->y1, (float)az->x1, (float)az->y2, (float)az->x2, (float)(az->y1+az->y2)/2); + break; + + } + + glDisable(GL_BLEND); +} /* only exported for WM */ void ED_area_overdraw(bContext *C) @@ -248,7 +316,19 @@ void ED_area_overdraw(bContext *C) if(az->type==AZONE_AREA) { area_draw_azone(az->x1, az->y1, az->x2, az->y2); } else if(az->type==AZONE_REGION) { - region_draw_azone(az); + + if(az->ar) { + /* only display tab or icons when the region is hidden */ + if (az->ar->flag & (RGN_FLAG_HIDDEN|RGN_FLAG_TOO_SMALL)) { + + if(G.rt==2) + region_draw_azone_tria(az); + else if(G.rt==1) + region_draw_azone_tab(az); + else + region_draw_azone_icon(az); + } + } } az->do_draw= 0; @@ -579,6 +659,96 @@ static void region_azone_icon(ScrArea *sa, AZone *az, ARegion *ar) } } +#define AZONEPAD_TABW 18 +#define AZONEPAD_TABH 7 + +/* region already made zero sized, in shape of edge */ +static void region_azone_tab(ScrArea *sa, AZone *az, ARegion *ar) +{ + AZone *azt; + int tot= 0, add; + + for(azt= sa->actionzones.first; azt; azt= azt->next) { + if(azt->edge == az->edge) tot++; + } + + switch(az->edge) { + case AE_TOP_TO_BOTTOMRIGHT: + if(ar->winrct.ymax == sa->totrct.ymin) add= 1; else add= 0; + az->x1= ar->winrct.xmax - 2*AZONEPAD_TABW; + az->y1= ar->winrct.ymax - add; + az->x2= ar->winrct.xmax - AZONEPAD_TABW; + az->y2= ar->winrct.ymax - add + AZONEPAD_TABH; + break; + case AE_BOTTOM_TO_TOPLEFT: + az->x1= ar->winrct.xmin + AZONEPAD_TABW; + az->y1= ar->winrct.ymin - AZONEPAD_TABH; + az->x2= ar->winrct.xmin + 2*AZONEPAD_TABW; + az->y2= ar->winrct.ymin; + break; + case AE_LEFT_TO_TOPRIGHT: + az->x1= ar->winrct.xmin + 1 - AZONEPAD_TABH; + az->y1= ar->winrct.ymax - 2*AZONEPAD_TABW; + az->x2= ar->winrct.xmin + 1; + az->y2= ar->winrct.ymax - AZONEPAD_TABW; + break; + case AE_RIGHT_TO_TOPLEFT: + az->x1= ar->winrct.xmax - 1; + az->y1= ar->winrct.ymax - 2*AZONEPAD_TABW; + az->x2= ar->winrct.xmax - 1 + AZONEPAD_TABH; + az->y2= ar->winrct.ymax - AZONEPAD_TABW; + break; + } + /* rect needed for mouse pointer test */ + BLI_init_rcti(&az->rect, az->x1, az->x2, az->y1, az->y2); +} + +#define AZONEPAD_TRIAW 16 +#define AZONEPAD_TRIAH 9 + + +/* region already made zero sized, in shape of edge */ +static void region_azone_tria(ScrArea *sa, AZone *az, ARegion *ar) +{ + AZone *azt; + int tot= 0, add; + + for(azt= sa->actionzones.first; azt; azt= azt->next) { + if(azt->edge == az->edge) tot++; + } + + switch(az->edge) { + case AE_TOP_TO_BOTTOMRIGHT: + if(ar->winrct.ymax == sa->totrct.ymin) add= 1; else add= 0; + az->x1= ar->winrct.xmax - 2*AZONEPAD_TRIAW; + az->y1= ar->winrct.ymax - add; + az->x2= ar->winrct.xmax - AZONEPAD_TRIAW; + az->y2= ar->winrct.ymax - add + AZONEPAD_TRIAH; + break; + case AE_BOTTOM_TO_TOPLEFT: + az->x1= ar->winrct.xmin + AZONEPAD_TRIAW; + az->y1= ar->winrct.ymin - AZONEPAD_TRIAH; + az->x2= ar->winrct.xmin + 2*AZONEPAD_TRIAW; + az->y2= ar->winrct.ymin; + break; + case AE_LEFT_TO_TOPRIGHT: + az->x1= ar->winrct.xmin + 1 - AZONEPAD_TRIAH; + az->y1= ar->winrct.ymax - 2*AZONEPAD_TRIAW; + az->x2= ar->winrct.xmin + 1; + az->y2= ar->winrct.ymax - AZONEPAD_TRIAW; + break; + case AE_RIGHT_TO_TOPLEFT: + az->x1= ar->winrct.xmax - 1; + az->y1= ar->winrct.ymax - 2*AZONEPAD_TRIAW; + az->x2= ar->winrct.xmax - 1 + AZONEPAD_TRIAH; + az->y2= ar->winrct.ymax - AZONEPAD_TRIAW; + break; + } + /* rect needed for mouse pointer test */ + BLI_init_rcti(&az->rect, az->x1, az->x2, az->y1, az->y2); +} + + static void region_azone_initialize(ScrArea *sa, ARegion *ar, AZEdge edge) { AZone *az; @@ -589,8 +759,13 @@ static void region_azone_initialize(ScrArea *sa, ARegion *ar, AZEdge edge) az->ar= ar; az->edge= edge; - if (ar->flag & RGN_FLAG_HIDDEN) { - region_azone_icon(sa, az, ar); + if (ar->flag & (RGN_FLAG_HIDDEN|RGN_FLAG_TOO_SMALL)) { + if(G.rt==2) + region_azone_tria(sa, az, ar); + else if(G.rt==1) + region_azone_tab(sa, az, ar); + else + region_azone_icon(sa, az, ar); } else { region_azone_edge(az, ar); } @@ -790,15 +965,6 @@ static void region_rect_recursive(ScrArea *sa, ARegion *ar, rcti *remainder, int ar->winx= ar->winrct.xmax - ar->winrct.xmin + 1; ar->winy= ar->winrct.ymax - ar->winrct.ymin + 1; - /* restore test exception */ - if(ar->alignment & RGN_SPLIT_PREV) { - if(ar->prev) { - remainder= remainder_prev; - ar->prev->winx= ar->prev->winrct.xmax - ar->prev->winrct.xmin + 1; - ar->prev->winy= ar->prev->winrct.ymax - ar->prev->winrct.ymin + 1; - } - } - /* set winrect for azones */ if(ar->flag & (RGN_FLAG_HIDDEN|RGN_FLAG_TOO_SMALL)) { ar->winrct= *remainder; @@ -814,12 +980,22 @@ static void region_rect_recursive(ScrArea *sa, ARegion *ar, rcti *remainder, int else /* prevent winrct to be valid */ ar->winrct.xmax= ar->winrct.xmin; } + + /* restore prev-split exception */ + if(ar->alignment & RGN_SPLIT_PREV) { + if(ar->prev) { + remainder= remainder_prev; + ar->prev->winx= ar->prev->winrct.xmax - ar->prev->winrct.xmin + 1; + ar->prev->winy= ar->prev->winrct.ymax - ar->prev->winrct.ymin + 1; + } + } + /* in end, add azones, where appropriate */ if(ar->regiontype == RGN_TYPE_HEADER && ar->winy + 6 > sa->winy) { /* The logic for this is: when the header takes up the full area, * disallow hiding it to view the main window. * - * Without this, uou can drag down the file selectors header and hide it + * Without this, you can drag down the file selectors header and hide it * by accident very easily (highly annoying!), the value 6 is arbitrary * but accounts for small common rounding problems when scaling the UI, * must be minimum '4' */ @@ -833,7 +1009,7 @@ static void region_rect_recursive(ScrArea *sa, ARegion *ar, rcti *remainder, int static void area_calc_totrct(ScrArea *sa, int sizex, int sizey) { - short rt= CLAMPIS(G.rt, 0, 16); + short rt= 0; // CLAMPIS(G.rt, 0, 16); if(sa->v1->vec.x>0) sa->totrct.xmin= sa->v1->vec.x+1+rt; else sa->totrct.xmin= sa->v1->vec.x; diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 721ce823351..80a65d3224e 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -910,7 +910,7 @@ static void drawscredge_area(ScrArea *sa, int sizex, int sizey, int center) short y2= sa->v3->vec.y; short a, rt; - rt= CLAMPIS(G.rt, 0, 16); + rt= 0; // CLAMPIS(G.rt, 0, 16); if(center==0) { cpack(0x505050); From 7f1fe0fdc23cbd0aaf2d285643dd718531eeb32c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 30 Jun 2011 15:43:38 +0000 Subject: [PATCH 09/22] fix for own mistake with key shortcuts r37850 --- source/blender/blenkernel/intern/key.c | 2 +- source/blender/editors/armature/armature_ops.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/blender/blenkernel/intern/key.c b/source/blender/blenkernel/intern/key.c index cf5fe1c3740..8b0cfb1d156 100644 --- a/source/blender/blenkernel/intern/key.c +++ b/source/blender/blenkernel/intern/key.c @@ -1032,7 +1032,7 @@ static float *get_weights_array(Object *ob, char *vgroup) defgrp_index= defgroup_name_index(ob, vgroup); if(defgrp_index >= 0) { float *weights; - int i, j; + int i; weights= MEM_callocN(totvert*sizeof(float), "weights"); diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c index 7bc9bb48a4c..16b748737ca 100644 --- a/source/blender/editors/armature/armature_ops.c +++ b/source/blender/editors/armature/armature_ops.c @@ -265,7 +265,7 @@ void ED_keymap_armature(wmKeyConfig *keyconf) /* set flags */ WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_toggle", WKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_enable", WKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_enable", WKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_disable", WKEY, KM_PRESS, KM_ALT, 0); /* armature/bone layers */ @@ -343,7 +343,7 @@ void ED_keymap_armature(wmKeyConfig *keyconf) /* set flags */ WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_toggle", WKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_enable", WKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_enable", WKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0); WM_keymap_add_menu(keymap, "VIEW3D_MT_bone_options_disable", WKEY, KM_PRESS, KM_ALT, 0); /* armature/bone layers */ From 093af18bfdb14e3051cca93ae946848e3cbc05ea Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 30 Jun 2011 16:06:30 +0000 Subject: [PATCH 10/22] fix for own error in script edits, broke bpy_extras.mesh_utils.ngon_tesselate --- release/scripts/modules/bpy_extras/mesh_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/modules/bpy_extras/mesh_utils.py b/release/scripts/modules/bpy_extras/mesh_utils.py index 2062fe4485f..cf099016aee 100644 --- a/release/scripts/modules/bpy_extras/mesh_utils.py +++ b/release/scripts/modules/bpy_extras/mesh_utils.py @@ -287,7 +287,7 @@ def ngon_tesselate(from_data, indices, fix_loops=True): else: return v1[1], v2[1] - if not PREF_FIX_LOOPS: + if not fix_loops: ''' Normal single concave loop filling ''' From 415761d508b06aabb4aba69cdaaf6186fda4e14a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 1 Jul 2011 03:40:12 +0000 Subject: [PATCH 11/22] own change to cmake files broke MSVC2010 with Debug configuration, reported by Alex K --- CMakeLists.txt | 4 ++-- build_files/scons/config/win32-vc-config.py | 2 +- build_files/scons/config/win64-vc-config.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 24a6f263b42..f7e8d7dc172 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -714,7 +714,7 @@ elseif(WIN32) set(PYTHON_LIBRARIES ${LIBDIR}/python/lib/python32.lib) endif() - set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib\;msvcmrt.lib\;msvcurt.lib\;msvcrtd.lib ") + set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib") # MSVC only, Mingw doesnt need if(CMAKE_CL_64) @@ -723,7 +723,7 @@ elseif(WIN32) set(PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}") endif() - set(PLATFORM_LINKFLAGS_DEBUG "/NODEFAULTLIB:libcmt.lib\;libc.lib") + set(PLATFORM_LINKFLAGS_DEBUG "/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib") else() # keep GCC spesific stuff here diff --git a/build_files/scons/config/win32-vc-config.py b/build_files/scons/config/win32-vc-config.py index 1654947885e..89b246cb39f 100644 --- a/build_files/scons/config/win32-vc-config.py +++ b/build_files/scons/config/win32-vc-config.py @@ -181,7 +181,7 @@ CXX_WARN = [] LLIBS = ['ws2_32', 'vfw32', 'winmm', 'kernel32', 'user32', 'gdi32', 'comdlg32', 'advapi32', 'shfolder', 'shell32', 'ole32', 'oleaut32', 'uuid'] -PLATFORM_LINKFLAGS = ['/SUBSYSTEM:CONSOLE','/MACHINE:IX86','/STACK:2097152','/INCREMENTAL:NO', '/LARGEADDRESSAWARE', '/NODEFAULTLIB:msvcrt.lib;msvcmrt.lib;msvcurt.lib;msvcrtd.lib'] +PLATFORM_LINKFLAGS = ['/SUBSYSTEM:CONSOLE','/MACHINE:IX86','/STACK:2097152','/INCREMENTAL:NO', '/LARGEADDRESSAWARE', '/NODEFAULTLIB:msvcrt.lib', '/NODEFAULTLIB:msvcmrt.lib', '/NODEFAULTLIB:msvcurt.lib', '/NODEFAULTLIB:msvcrtd.lib'] # # Todo # BF_PROFILE_CCFLAGS = ['-pg', '-g '] diff --git a/build_files/scons/config/win64-vc-config.py b/build_files/scons/config/win64-vc-config.py index 34fa27dc98d..67db1c441d7 100644 --- a/build_files/scons/config/win64-vc-config.py +++ b/build_files/scons/config/win64-vc-config.py @@ -190,7 +190,7 @@ if BF_DEBUG: else: BF_NUMJOBS=6 -PLATFORM_LINKFLAGS = ['/SUBSYSTEM:CONSOLE','/MACHINE:X64','/STACK:2097152','/OPT:NOREF','/INCREMENTAL:NO', '/NODEFAULTLIB:msvcrt.lib;msvcmrt.lib;msvcurt.lib;msvcrtd.lib'] +PLATFORM_LINKFLAGS = ['/SUBSYSTEM:CONSOLE','/MACHINE:X64','/STACK:2097152','/OPT:NOREF','/INCREMENTAL:NO', '/NODEFAULTLIB:msvcrt.lib', '/NODEFAULTLIB:msvcmrt.lib', '/NODEFAULTLIB:msvcurt.lib', '/NODEFAULTLIB:msvcrtd.lib'] BF_BUILDDIR = '..\\build\\blender25-win64-vc' BF_INSTALLDIR='..\\install\\blender25-win64-vc' From 1f2c93f9f783a2b0c2fb6ce42e30325a25d58265 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 1 Jul 2011 05:58:28 +0000 Subject: [PATCH 12/22] Fix #27816: Outliner does not update when parents are cleared Added NC_OBJECT|ND_PARENT notifier to OBJECT_OT_parent_clear operator. --- source/blender/editors/object/object_relations.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index aa2e6d2c145..f3b67867d7f 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -446,6 +446,7 @@ static int parent_clear_exec(bContext *C, wmOperator *op) DAG_scene_sort(bmain, scene); DAG_ids_flush_update(bmain, 0); WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL); + WM_event_add_notifier(C, NC_OBJECT|ND_PARENT, NULL); return OPERATOR_FINISHED; } From 1072ba66e0bb9c09d0cdb9502bfc8ea89ee30172 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 1 Jul 2011 08:48:00 +0000 Subject: [PATCH 13/22] fix [#27820] foreach_get on bpy_prop_collections returns weird results --- source/blender/editors/object/object_hook.c | 2 +- source/blender/makesrna/intern/rna_access.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/object/object_hook.c b/source/blender/editors/object/object_hook.c index 4dc944db28c..bb32869469a 100644 --- a/source/blender/editors/object/object_hook.c +++ b/source/blender/editors/object/object_hook.c @@ -107,7 +107,7 @@ static int return_editmesh_vgroup(Object *obedit, EditMesh *em, char *name, floa if(obedit->actdef) { const int defgrp_index= obedit->actdef-1; - int i, totvert=0; + int totvert=0; MDeformVert *dvert; EditVert *eve; diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index e83161b8c62..d9fbdd7caf2 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -2839,7 +2839,7 @@ static int rna_raw_access(ReportList *reports, PointerRNA *ptr, PropertyRNA *pro } /* editable check */ - if(RNA_property_editable(&itemptr, iprop)) { + if(!set || RNA_property_editable(&itemptr, iprop)) { if(a+itemlen > in.len) { BKE_reportf(reports, RPT_ERROR, "Array length mismatch (got %d, expected more).", in.len); err= 1; From 5916309ac97e9e5511f3d3adb0fd798bfad4b432 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 1 Jul 2011 11:13:26 +0000 Subject: [PATCH 14/22] moving BGL to rst format, first move file. --- doc/python_api/{epy/BGL.py => rst/bgl.rst} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename doc/python_api/{epy/BGL.py => rst/bgl.rst} (100%) diff --git a/doc/python_api/epy/BGL.py b/doc/python_api/rst/bgl.rst similarity index 100% rename from doc/python_api/epy/BGL.py rename to doc/python_api/rst/bgl.rst From 01550f880ed97f074a03603c0000e11af219f324 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 1 Jul 2011 11:16:42 +0000 Subject: [PATCH 15/22] add 'bgl' OpenGL doc to sphinx --- doc/python_api/rst/bgl.rst | 3659 +++++++++++++++--------------- doc/python_api/sphinx_doc_gen.py | 22 +- 2 files changed, 1882 insertions(+), 1799 deletions(-) diff --git a/doc/python_api/rst/bgl.rst b/doc/python_api/rst/bgl.rst index ce148dc72ba..743f1c33e27 100644 --- a/doc/python_api/rst/bgl.rst +++ b/doc/python_api/rst/bgl.rst @@ -1,1807 +1,1888 @@ -# Blender.BGL module (OpenGL wrapper) -""" -The Blender.BGL submodule (the OpenGL wrapper). +bgl module (OpenGL wrapper) +=========================== -B{New}: some GLU functions: L{gluLookAt}, etc. - -The Blender.BGL submodule -========================= -(when accessing it from the Game Engine use BGL instead of Blender.BGL) +.. module:: bgl This module wraps OpenGL constants and functions, making them available from within Blender Python. The complete list can be retrieved from the module itself, by listing its -contents: dir(Blender.BGL). A simple search on the net can point to more -than enough material to teach OpenGL programming, from books to many +contents: dir(bgl). A simple search on the net can point to more +than enough material to teach OpenGL programming, from books to many collections of tutorials. The "red book": "I{OpenGL Programming Guide: The Official Guide to Learning OpenGL}" and the online NeHe tutorials are two of the best resources. -Example:: - import Blender - from Blender.BGL import * - from Blender import Draw - R = G = B = 0 - A = 1 - title = "Testing BGL + Draw" - instructions = "Use mouse buttons or wheel to change the background color." - quitting = " Press ESC or q to quit." - len1 = Draw.GetStringWidth(title) - len2 = Draw.GetStringWidth(instructions + quitting) - # - def show_win(): - glClearColor(R,G,B,A) # define color used to clear buffers - glClear(GL_COLOR_BUFFER_BIT) # use it to clear the color buffer - glColor3f(0.35,0.18,0.92) # define default color - glBegin(GL_POLYGON) # begin a vertex data list - glVertex2i(165, 158) - glVertex2i(252, 55) - glVertex2i(104, 128) - glEnd() - glColor3f(0.4,0.4,0.4) # change default color - glRecti(40, 96, 60+len1, 113) - glColor3f(1,1,1) - glRasterPos2i(50,100) # move cursor to x = 50, y = 100 - Draw.Text(title) # draw this text there - glRasterPos2i(350,40) # move cursor again - Draw.Text(instructions + quitting) # draw another msg - glBegin(GL_LINE_LOOP) # begin a vertex-data list - glVertex2i(46,92) - glVertex2i(120,92) - glVertex2i(120,115) - glVertex2i(46,115) - glEnd() # close this list - # - def ev(evt, val): # event callback for Draw.Register() - global R,G,B,A # ... it handles input events - if evt == Draw.ESCKEY or evt == Draw.QKEY: - Draw.Exit() # this quits the script - elif not val: return - elif evt == Draw.LEFTMOUSE: R = 1 - R - elif evt == Draw.MIDDLEMOUSE: G = 1 - G - elif evt == Draw.RIGHTMOUSE: B = 1 - B - elif evt == Draw.WHEELUPMOUSE: - R += 0.1 - if R > 1: R = 1 - elif evt == Draw.WHEELDOWNMOUSE: - R -= 0.1 - if R < 0: R = 0 - else: - return # don't redraw if nothing changed - Draw.Redraw(1) # make changes visible. - # - Draw.Register(show_win, ev, None) # start the main loop - -@note: you can use the L{Image} module and L{Image.Image} BPy object to load - and set textures. See L{Image.Image.glLoad} and L{Image.Image.glFree}, - for example. -@see: U{www.opengl.org} -@see: U{nehe.gamedev.net} -""" - -def glAccum(op, value): - """ - Operate on the accumulation buffer - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/accum.html} - - @type op: Enumerated constant - @param op: The accumulation buffer operation. - @type value: float - @param value: a value used in the accumulation buffer operation. - """ - -def glAlphaFunc(func, ref): - """ - Specify the alpha test function - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/alphafunc.html} - - @type func: Enumerated constant - @param func: Specifies the alpha comparison function. - @type ref: float - @param ref: The reference value that incoming alpha values are compared to. - Clamped between 0 and 1. - """ - -def glAreTexturesResident(n, textures, residences): - """ - Determine if textures are loaded in texture memory - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/aretexturesresident.html} - - @type n: int - @param n: Specifies the number of textures to be queried. - @type textures: Buffer object I{type GL_INT} - @param textures: Specifies an array containing the names of the textures to be queried - @type residences: Buffer object I{type GL_INT}(boolean) - @param residences: An array in which the texture residence status in returned.The residence status of a - texture named by an element of textures is returned in the corresponding element of residences. - """ - -def glBegin(mode): - """ - Delimit the vertices of a primitive or a group of like primatives - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/begin.html} - - @type mode: Enumerated constant - @param mode: Specifies the primitive that will be create from vertices between glBegin and - glEnd. - """ - -def glBindTexture(target, texture): - """ - Bind a named texture to a texturing target - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/bindtexture.html} - - @type target: Enumerated constant - @param target: Specifies the target to which the texture is bound. - @type texture: unsigned int - @param texture: Specifies the name of a texture. - """ - -def glBitmap(width, height, xorig, yorig, xmove, ymove, bitmap): - """ - Draw a bitmap - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/bitmap.html} - - @type width, height: int - @param width, height: Specify the pixel width and height of the bitmap image. - @type xorig, yorig: float - @param xorig, yorig: Specify the location of the origin in the bitmap image. The origin is measured - from the lower left corner of the bitmap, with right and up being the positive axes. - @type xmove, ymove: float - @param xmove, ymove: Specify the x and y offsets to be added to the current raster position after - the bitmap is drawn. - @type bitmap: Buffer object I{type GL_BYTE} - @param bitmap: Specifies the address of the bitmap image. - """ - -def glBlendFunc(sfactor, dfactor): - """ - Specify pixel arithmetic - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/blendfunc.html} - - @type sfactor: Enumerated constant - @param sfactor: Specifies how the red, green, blue, and alpha source blending factors are - computed. - @type dfactor: Enumerated constant - @param dfactor: Specifies how the red, green, blue, and alpha destination blending factors are - computed. - """ - -def glCallList(list): - """ - Execute a display list - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/calllist.html} - - @type list: unsigned int - @param list: Specifies the integer name of the display list to be executed. - """ - -def glCallLists(n, type, lists): - """ - Execute a list of display lists - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/calllists.html} - - @type n: int - @param n: Specifies the number of display lists to be executed. - @type type: Enumerated constant - @param type: Specifies the type of values in lists. - @type lists: Buffer object - @param lists: Specifies the address of an array of name offsets in the display list. - The pointer type is void because the offsets can be bytes, shorts, ints, or floats, - depending on the value of type. - """ - -def glClear(mask): - """ - Clear buffers to preset values - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/clear.html} - - @type mask: Enumerated constant(s) - @param mask: Bitwise OR of masks that indicate the buffers to be cleared. - """ - -def glClearAccum(red, green, blue, alpha): - """ - Specify clear values for the accumulation buffer - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/clearaccum.html} - - @type red, green, blue, alpha: float - @param red, green, blue, alpha: Specify the red, green, blue, and alpha values used when the - accumulation buffer is cleared. The initial values are all 0. - """ - -def glClearColor(red, green, blue, alpha): - """ - Specify clear values for the color buffers - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/clearcolor.html} - - @type red, green, blue, alpha: float - @param red, green, blue, alpha: Specify the red, green, blue, and alpha values used when the - color buffers are cleared. The initial values are all 0. - """ - -def glClearDepth(depth): - """ - Specify the clear value for the depth buffer - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/cleardepth.html} - - @type depth: int - @param depth: Specifies the depth value used when the depth buffer is cleared. - The initial value is 1. - """ - -def glClearIndex(c): - """ - Specify the clear value for the color index buffers - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/clearindex.html} - - @type c: float - @param c: Specifies the index used when the color index buffers are cleared. - The initial value is 0. - """ - -def glClearStencil(s): - """ - Specify the clear value for the stencil buffer - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/clearstencil.html} - - @type s: int - @param s: Specifies the index used when the stencil buffer is cleared. The initial value is 0. - """ - -def glClipPlane (plane, equation): - """ - Specify a plane against which all geometry is clipped - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/clipplane.html} - - @type plane: Enumerated constant - @param plane: Specifies which clipping plane is being positioned. - @type equation: Buffer object I{type GL_FLOAT}(double) - @param equation: Specifies the address of an array of four double- precision floating-point - values. These values are interpreted as a plane equation. - """ - -def glColor (red, green, blue, alpha): - """ - B{glColor3b, glColor3d, glColor3f, glColor3i, glColor3s, glColor3ub, glColor3ui, glColor3us, - glColor4b, glColor4d, glColor4f, glColor4i, glColor4s, glColor4ub, glColor4ui, glColor4us, - glColor3bv, glColor3dv, glColor3fv, glColor3iv, glColor3sv, glColor3ubv, glColor3uiv, - glColor3usv, glColor4bv, glColor4dv, glColor4fv, glColor4iv, glColor4sv, glColor4ubv, - glColor4uiv, glColor4usv} - - Set a new color. - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/color.html} - - @type red, green, blue, alpha: Depends on function prototype. - @param red, green, blue: Specify new red, green, and blue values for the current color. - @param alpha: Specifies a new alpha value for the current color. Included only in the - four-argument glColor4 commands. (With '4' colors only) - """ - -def glColorMask(red, green, blue, alpha): - """ - Enable and disable writing of frame buffer color components - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/colormask.html} - - @type red, green, blue, alpha: int (boolean) - @param red, green, blue, alpha: Specify whether red, green, blue, and alpha can or cannot be - written into the frame buffer. The initial values are all GL_TRUE, indicating that the - color components can be written. - """ - -def glColorMaterial(face, mode): - """ - Cause a material color to track the current color - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/colormaterial.html} - - @type face: Enumerated constant - @param face: Specifies whether front, back, or both front and back material parameters should - track the current color. - @type mode: Enumerated constant - @param mode: Specifies which of several material parameters track the current color. - """ - -def glCopyPixels(x, y, width, height, type): - """ - Copy pixels in the frame buffer - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/copypixels.html} - - @type x, y: int - @param x, y: Specify the window coordinates of the lower left corner of the rectangular - region of pixels to be copied. - @type width, height: int - @param width,height: Specify the dimensions of the rectangular region of pixels to be copied. - Both must be non-negative. - @type type: Enumerated constant - @param type: Specifies whether color values, depth values, or stencil values are to be copied. - """ - - def glCopyTexImage2D(target, level, internalformat, x, y, width, height, border): - """ - Copy pixels into a 2D texture image - @see: U{www.opengl.org/sdk/docs/man/xhtml/glCopyTexImage2D.xml} - - @type target: Enumerated constant - @param target: Specifies the target texture. - @type level: int - @param level: Specifies the level-of-detail number. Level 0 is the base image level. - Level n is the nth mipmap reduction image. - @type internalformat: int - @param internalformat: Specifies the number of color components in the texture. - @type width: int - @type x, y: int - @param x, y:Specify the window coordinates of the first pixel that is copied - from the frame buffer. This location is the lower left corner of a rectangular - block of pixels. - @param width: Specifies the width of the texture image. Must be 2n+2(border) for - some integer n. All implementations support texture images that are at least 64 - texels wide. - @type height: int - @param height: Specifies the height of the texture image. Must be 2m+2(border) for - some integer m. All implementations support texture images that are at least 64 - texels high. - @type border: int - @param border: Specifies the width of the border. Must be either 0 or 1. - """ - -def glCullFace(mode): - """ - Specify whether front- or back-facing facets can be culled - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/cullface.html} - - @type mode: Enumerated constant - @param mode: Specifies whether front- or back-facing facets are candidates for culling. - """ - -def glDeleteLists(list, range): - """ - Delete a contiguous group of display lists - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/deletelists.html} - - @type list: unsigned int - @param list: Specifies the integer name of the first display list to delete - @type range: int - @param range: Specifies the number of display lists to delete - """ - -def glDeleteTextures(n, textures): - """ - Delete named textures - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/deletetextures.html} - - @type n: int - @param n: Specifies the number of textures to be deleted - @type textures: Buffer I{GL_INT} - @param textures: Specifies an array of textures to be deleted - """ - -def glDepthFunc(func): - """ - Specify the value used for depth buffer comparisons - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/depthfunc.html} - - @type func: Enumerated constant - @param func: Specifies the depth comparison function. - """ - -def glDepthMask(flag): - """ - Enable or disable writing into the depth buffer - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/depthmask.html} - - @type flag: int (boolean) - @param flag: Specifies whether the depth buffer is enabled for writing. If flag is GL_FALSE, - depth buffer writing is disabled. Otherwise, it is enabled. Initially, depth buffer - writing is enabled. - """ - -def glDepthRange(zNear, zFar): - """ - Specify mapping of depth values from normalized device coordinates to window coordinates - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/depthrange.html} - - @type zNear: int - @param zNear: Specifies the mapping of the near clipping plane to window coordinates. - The initial value is 0. - @type zFar: int - @param zFar: Specifies the mapping of the far clipping plane to window coordinates. - The initial value is 1. - """ - -def glDisable(cap): - """ - Disable server-side GL capabilities - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/enable.html} - - @type cap: Enumerated constant - @param cap: Specifies a symbolic constant indicating a GL capability. - """ - -def glDrawBuffer(mode): - """ - Specify which color buffers are to be drawn into - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/drawbuffer.html} - - @type mode: Enumerated constant - @param mode: Specifies up to four color buffers to be drawn into. - """ - -def glDrawPixels(width, height, format, type, pixels): - """ - Write a block of pixels to the frame buffer - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/drawpixels.html} - - @type width, height: int - @param width, height: Specify the dimensions of the pixel rectangle to be - written into the frame buffer. - @type format: Enumerated constant - @param format: Specifies the format of the pixel data. - @type type: Enumerated constant - @param type: Specifies the data type for pixels. - @type pixels: Buffer object - @param pixels: Specifies a pointer to the pixel data. - """ - -def glEdgeFlag (flag): - """ - B{glEdgeFlag, glEdgeFlagv} - - Flag edges as either boundary or non-boundary - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/edgeflag.html} - - @type flag: Depends of function prototype - @param flag: Specifies the current edge flag value.The initial value is GL_TRUE. - """ - -def glEnable(cap): - """ - Enable server-side GL capabilities - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/enable.html} - - @type cap: Enumerated constant - @param cap: Specifies a symbolic constant indicating a GL capability. - """ - -def glEnd(): - """ - Delimit the vertices of a primitive or group of like primitives - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/begin.html} - """ - -def glEndList(): - """ - Create or replace a display list - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/newlist.html} - """ - -def glEvalCoord (u,v): - """ - B{glEvalCoord1d, glEvalCoord1f, glEvalCoord2d, glEvalCoord2f, glEvalCoord1dv, glEvalCoord1fv, - glEvalCoord2dv, glEvalCoord2fv} - - Evaluate enabled one- and two-dimensional maps - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/evalcoord.html} - - @type u: Depends on function prototype. - @param u: Specifies a value that is the domain coordinate u to the basis function defined - in a previous glMap1 or glMap2 command. If the function prototype ends in 'v' then - u specifies a pointer to an array containing either one or two domain coordinates. The first - coordinate is u. The second coordinate is v, which is present only in glEvalCoord2 versions. - @type v: Depends on function prototype. (only with '2' prototypes) - @param v: Specifies a value that is the domain coordinate v to the basis function defined - in a previous glMap2 command. This argument is not present in a glEvalCoord1 command. - """ - -def glEvalMesh (mode, i1, i2): - """ - B{glEvalMesh1 or glEvalMesh2} - - Compute a one- or two-dimensional grid of points or lines - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/evalmesh.html} - - @type mode: Enumerated constant - @param mode: In glEvalMesh1, specifies whether to compute a one-dimensional - mesh of points or lines. - @type i1, i2: int - @param i1, i2: Specify the first and last integer values for the grid domain variable i. - """ - -def glEvalPoint (i, j): - """ - B{glEvalPoint1 and glEvalPoint2} - - Generate and evaluate a single point in a mesh - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/evalpoint.html} - - @type i: int - @param i: Specifies the integer value for grid domain variable i. - @type j: int (only with '2' prototypes) - @param j: Specifies the integer value for grid domain variable j (glEvalPoint2 only). - """ - -def glFeedbackBuffer (size, type, buffer): - """ - Controls feedback mode - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/feedbackbuffer.html} - - @type size: int - @param size:Specifies the maximum number of values that can be written into buffer. - @type type: Enumerated constant - @param type:Specifies a symbolic constant that describes the information that - will be returned for each vertex. - @type buffer: Buffer object I{GL_FLOAT} - @param buffer: Returns the feedback data. - """ - -def glFinish(): - """ - Block until all GL execution is complete - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/finish.html} - """ - -def glFlush(): - """ - Force Execution of GL commands in finite time - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/flush.html} - """ - -def glFog (pname, param): - """ - B{glFogf, glFogi, glFogfv, glFogiv} - - Specify fog parameters - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/fog.html} - - @type pname: Enumerated constant - @param pname: Specifies a single-valued fog parameter. If the function prototype - ends in 'v' specifies a fog parameter. - @type param: Depends on function prototype. - @param param: Specifies the value or values to be assigned to pname. GL_FOG_COLOR - requires an array of four values. All other parameters accept an array containing - only a single value. - """ - -def glFrontFace(mode): - """ - Define front- and back-facing polygons - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/frontface.html} - - @type mode: Enumerated constant - @param mode: Specifies the orientation of front-facing polygons. - """ - -def glFrustum(left, right, bottom, top, zNear, zFar): - """ - Multiply the current matrix by a perspective matrix - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/frustum.html} - - @type left, right: double (float) - @param left, right: Specify the coordinates for the left and right vertical - clipping planes. - @type top, bottom: double (float) - @param top, bottom: Specify the coordinates for the bottom and top horizontal - clipping planes. - @type zNear, zFar: double (float) - @param zNear, zFar: Specify the distances to the near and far depth clipping planes. - Both distances must be positive. - """ - -def glGenLists(range): - """ - Generate a contiguous set of empty display lists - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/genlists.html} - - @type range: int - @param range: Specifies the number of contiguous empty display lists to be generated. - """ - -def glGenTextures(n, textures): - """ - Generate texture names - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/gentextures.html} - - @type n: int - @param n: Specifies the number of textures name to be generated. - @type textures: Buffer object I{type GL_INT} - @param textures: Specifies an array in which the generated textures names are stored. - """ - -def glGet (pname, param): - """ - B{glGetBooleanv, glGetfloatv, glGetFloatv, glGetIntegerv} - - Return the value or values of a selected parameter - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/get.html} - - @type pname: Enumerated constant - @param pname: Specifies the parameter value to be returned. - @type param: Depends on function prototype. - @param param: Returns the value or values of the specified parameter. - """ - -def glGetClipPlane(plane, equation): - """ - Return the coefficients of the specified clipping plane - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getclipplane.html} - - @type plane: Enumerated constant - @param plane: Specifies a clipping plane. The number of clipping planes depends on the - implementation, but at least six clipping planes are supported. They are identified by - symbolic names of the form GL_CLIP_PLANEi where 0 < i < GL_MAX_CLIP_PLANES. - @type equation: Buffer object I{type GL_FLOAT} - @param equation: Returns four float (double)-precision values that are the coefficients of the - plane equation of plane in eye coordinates. The initial value is (0, 0, 0, 0). - """ - -def glGetError(): - """ - Return error information - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/geterror.html} - """ - -def glGetLight (light, pname, params): - """ - B{glGetLightfv and glGetLightiv} - - Return light source parameter values - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getlight.html} - - @type light: Enumerated constant - @param light: Specifies a light source. The number of possible lights depends on the - implementation, but at least eight lights are supported. They are identified by symbolic - names of the form GL_LIGHTi where 0 < i < GL_MAX_LIGHTS. - @type pname: Enumerated constant - @param pname: Specifies a light source parameter for light. - @type params: Buffer object. Depends on function prototype. - @param params: Returns the requested data. - """ - -def glGetMap (target, query, v): - """ - B{glGetMapdv, glGetMapfv, glGetMapiv} - - Return evaluator parameters - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getmap.html} - - @type target: Enumerated constant - @param target: Specifies the symbolic name of a map. - @type query: Enumerated constant - @param query: Specifies which parameter to return. - @type v: Buffer object. Depends on function prototype. - @param v: Returns the requested data. - """ - -def glGetMaterial (face, pname, params): - """ - B{glGetMaterialfv, glGetMaterialiv} - - Return material parameters - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getmaterial.html} - - @type face: Enumerated constant - @param face: Specifies which of the two materials is being queried. - representing the front and back materials, respectively. - @type pname: Enumerated constant - @param pname: Specifies the material parameter to return. - @type params: Buffer object. Depends on function prototype. - @param params: Returns the requested data. - """ - -def glGetPixelMap (map, values): - """ - B{glGetPixelMapfv, glGetPixelMapuiv, glGetPixelMapusv} - - Return the specified pixel map - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getpixelmap.html} - - @type map: Enumerated constant - @param map: Specifies the name of the pixel map to return. - @type values: Buffer object. Depends on function prototype. - @param values: Returns the pixel map contents. - """ - -def glGetPolygonStipple(mask): - """ - Return the polygon stipple pattern - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getpolygonstipple.html} - - @type mask: Buffer object I{type GL_BYTE} - @param mask: Returns the stipple pattern. The initial value is all 1's. - """ - -def glGetString(name): - """ - Return a string describing the current GL connection - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getstring.html} - - @type name: Enumerated constant - @param name: Specifies a symbolic constant. - - """ - -def glGetTexEnv (target, pname, params): - """ - B{glGetTexEnvfv, glGetTexEnviv} - - Return texture environment parameters - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/gettexenv.html} - - @type target: Enumerated constant - @param target: Specifies a texture environment. Must be GL_TEXTURE_ENV. - @type pname: Enumerated constant - @param pname: Specifies the symbolic name of a texture environment parameter. - @type params: Buffer object. Depends on function prototype. - @param params: Returns the requested data. - """ - -def glGetTexGen (coord, pname, params): - """ - B{glGetTexGendv, glGetTexGenfv, glGetTexGeniv} - - Return texture coordinate generation parameters - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/gettexgen.html} - - @type coord: Enumerated constant - @param coord: Specifies a texture coordinate. - @type pname: Enumerated constant - @param pname: Specifies the symbolic name of the value(s) to be returned. - @type params: Buffer object. Depends on function prototype. - @param params: Returns the requested data. - """ - -def glGetTexImage(target, level, format, type, pixels): - """ - Return a texture image - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/getteximage.html} - - @type target: Enumerated constant - @param target: Specifies which texture is to be obtained. - @type level: int - @param level: Specifies the level-of-detail number of the desired image. - Level 0 is the base image level. Level n is the nth mipmap reduction image. - @type format: Enumerated constant - @param format: Specifies a pixel format for the returned data. - @type type: Enumerated constant - @param type: Specifies a pixel type for the returned data. - @type pixels: Buffer object. - @param pixels: Returns the texture image. Should be a pointer to an array of the - type specified by type - """ - -def glGetTexLevelParameter (target, level, pname, params): - """ - B{glGetTexLevelParameterfv, glGetTexLevelParameteriv} - - return texture parameter values for a specific level of detail - @see: U{opengl.org/developers/documentation/man_pages/hardcopy/GL/html/gl/gettexlevelparameter.html} - - @type target: Enumerated constant - @param target: Specifies the symbolic name of the target texture. - @type level: int - @param level: Specifies the level-of-detail number of the desired image. - Level 0 is the base image level. Level n is the nth mipmap reduction image. - @type pname: Enumerated constant - @param pname: Specifies the symbolic name of a texture parameter. - @type params: Buffer object. Depends on function prototype. - @param params: Returns the requested data. - """ - -def glGetTexParameter (target, pname, params): - """ - B{glGetTexParameterfv, glGetTexParameteriv} - - Return texture parameter values - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/gettexparameter.html} - - @type target: Enumerated constant - @param target: Specifies the symbolic name of the target texture. - @type pname: Enumerated constant - @param pname: Specifies the symbolic name the target texture. - @type params: Buffer object. Depends on function prototype. - @param params: Returns the texture parameters. - """ - -def glHint(target, mode): - """ - Specify implementation-specific hints - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/hint.html} - - @type target: Enumerated constant - @param target: Specifies a symbolic constant indicating the behavior to be - controlled. - @type mode: Enumerated constant - @param mode: Specifies a symbolic constant indicating the desired behavior. - """ - -def glIndex (c): - """ - B{glIndexd, glIndexf, glIndexi, glIndexs, glIndexdv, glIndexfv, glIndexiv, glIndexsv} - - Set the current color index - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/index_.html} - - @type c: Buffer object. Depends on function prototype. - @param c: Specifies a pointer to a one element array that contains the new value for - the current color index. - """ - -def glInitNames(): - """ - Initialize the name stack - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/initnames.html} - """ - -def glIsEnabled(cap): - """ - Test whether a capability is enabled - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/isenabled.html} - - @type cap: Enumerated constant - @param cap: Specifies a constant representing a GL capability. - """ - -def glIsList(list): - """ - Determine if a name corresponds to a display-list - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/islist.html} - - @type list: unsigned int - @param list: Specifies a potential display-list name. - """ - -def glIsTexture(texture): - """ - Determine if a name corresponds to a texture - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/istexture.html} - - @type texture: unsigned int - @param texture: Specifies a value that may be the name of a texture. - """ - -def glLight (light, pname, param): - """ - B{glLightf,glLighti, glLightfv, glLightiv} - - Set the light source parameters - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/light.html} - - @type light: Enumerated constant - @param light: Specifies a light. The number of lights depends on the implementation, - but at least eight lights are supported. They are identified by symbolic names of the - form GL_LIGHTi where 0 < i < GL_MAX_LIGHTS. - @type pname: Enumerated constant - @param pname: Specifies a single-valued light source parameter for light. - @type param: Depends on function prototype. - @param param: Specifies the value that parameter pname of light source light will be set to. - If function prototype ends in 'v' specifies a pointer to the value or values that - parameter pname of light source light will be set to. - """ - -def glLightModel (pname, param): - """ - B{glLightModelf, glLightModeli, glLightModelfv, glLightModeliv} - - Set the lighting model parameters - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/lightmodel.html} - - @type pname: Enumerated constant - @param pname: Specifies a single-value light model parameter. - @type param: Depends on function prototype. - @param param: Specifies the value that param will be set to. If function prototype ends in 'v' - specifies a pointer to the value or values that param will be set to. - """ - -def glLineStipple(factor, pattern): - """ - Specify the line stipple pattern - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/linestipple.html} - - @type factor: int - @param factor: Specifies a multiplier for each bit in the line stipple pattern. - If factor is 3, for example, each bit in the pattern is used three times before - the next bit in the pattern is used. factor is clamped to the range [1, 256] and - defaults to 1. - @type pattern: unsigned short int - @param pattern: Specifies a 16-bit integer whose bit pattern determines which fragments - of a line will be drawn when the line is rasterized. Bit zero is used first; the default - pattern is all 1's. - """ - -def glLineWidth(width): - """ - Specify the width of rasterized lines. - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/linewidth.html} - - @type width: float - @param width: Specifies the width of rasterized lines. The initial value is 1. - """ - -def glListBase(base): - """ - Set the display-list base for glCallLists - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/listbase.html} - - @type base: unsigned int - @param base: Specifies an integer offset that will be added to glCallLists - offsets to generate display-list names. The initial value is 0. - """ - -def glLoadIdentity(): - """ - Replace the current matrix with the identity matrix - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/loadidentity.html} - """ - -def glLoadMatrix (m): - """ - B{glLoadMatrixd, glLoadMatixf} - - Replace the current matrix with the specified matrix - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/loadmatrix.html} - - @type m: Buffer object. Depends on function prototype. - @param m: Specifies a pointer to 16 consecutive values, which are used as the elements - of a 4x4 column-major matrix. - """ - -def glLoadName(name): - """ - Load a name onto the name stack. - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/loadname.html} - - @type name: unsigned int - @param name: Specifies a name that will replace the top value on the name stack. - """ - -def glLogicOp(opcode): - """ - Specify a logical pixel operation for color index rendering - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/logicop.html} - - @type opcode: Enumerated constant - @param opcode: Specifies a symbolic constant that selects a logical operation. - """ - -def glMap1 (target, u1, u2, stride, order, points): - """ - B{glMap1d, glMap1f} - - Define a one-dimensional evaluator - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/map1.html} - - @type target: Enumerated constant - @param target: Specifies the kind of values that are generated by the evaluator. - @type u1, u2: Depends on function prototype. - @param u1,u2: Specify a linear mapping of u, as presented to glEvalCoord1, to ^, t - he variable that is evaluated by the equations specified by this command. - @type stride: int - @param stride: Specifies the number of floats or float (double)s between the beginning - of one control point and the beginning of the next one in the data structure - referenced in points. This allows control points to be embedded in arbitrary data - structures. The only constraint is that the values for a particular control point must - occupy contiguous memory locations. - @type order: int - @param order: Specifies the number of control points. Must be positive. - @type points: Buffer object. Depends on function prototype. - @param points: Specifies a pointer to the array of control points. - """ - -def glMap2 (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points): - """ - B{glMap2d, glMap2f} - - Define a two-dimensional evaluator - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/map2.html} - - @type target: Enumerated constant - @param target: Specifies the kind of values that are generated by the evaluator. - @type u1, u2: Depends on function prototype. - @param u1,u2: Specify a linear mapping of u, as presented to glEvalCoord2, to ^, t - he variable that is evaluated by the equations specified by this command. Initially - u1 is 0 and u2 is 1. - @type ustride: int - @param ustride: Specifies the number of floats or float (double)s between the beginning - of control point R and the beginning of control point R ij, where i and j are the u - and v control point indices, respectively. This allows control points to be embedded - in arbitrary data structures. The only constraint is that the values for a particular - control point must occupy contiguous memory locations. The initial value of ustride is 0. - @type uorder: int - @param uorder: Specifies the dimension of the control point array in the u axis. - Must be positive. The initial value is 1. - @type v1, v2: Depends on function prototype. - @param v1, v2: Specify a linear mapping of v, as presented to glEvalCoord2, to ^, - one of the two variables that are evaluated by the equations specified by this command. - Initially, v1 is 0 and v2 is 1. - @type vstride: int - @param vstride: Specifies the number of floats or float (double)s between the beginning of control - point R and the beginning of control point R ij, where i and j are the u and v control - point(indices, respectively. This allows control points to be embedded in arbitrary data - structures. The only constraint is that the values for a particular control point must - occupy contiguous memory locations. The initial value of vstride is 0. - @type vorder: int - @param vorder: Specifies the dimension of the control point array in the v axis. - Must be positive. The initial value is 1. - @type points: Buffer object. Depends on function prototype. - @param points: Specifies a pointer to the array of control points. - """ - -def glMapGrid (un, u1,u2 ,vn, v1, v2): - """ - B{glMapGrid1d, glMapGrid1f, glMapGrid2d, glMapGrid2f} - - Define a one- or two-dimensional mesh - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/mapgrid.html} - - @type un: int - @param un: Specifies the number of partitions in the grid range interval - [u1, u2]. Must be positive. - @type u1, u2: Depends on function prototype. - @param u1, u2: Specify the mappings for integer grid domain values i=0 and i=un. - @type vn: int - @param vn: Specifies the number of partitions in the grid range interval [v1, v2] - (glMapGrid2 only). - @type v1, v2: Depends on function prototype. - @param v1, v2: Specify the mappings for integer grid domain values j=0 and j=vn - (glMapGrid2 only). - """ - -def glMaterial (face, pname, params): - """ - Specify material parameters for the lighting model. - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/material.html} - - @type face: Enumerated constant - @param face: Specifies which face or faces are being updated. Must be one of: - @type pname: Enumerated constant - @param pname: Specifies the single-valued material parameter of the face - or faces that is being updated. Must be GL_SHININESS. - @type params: int - @param params: Specifies the value that parameter GL_SHININESS will be set to. - If function prototype ends in 'v' specifies a pointer to the value or values that - pname will be set to. - """ - -def glMatrixMode(mode): - """ - Specify which matrix is the current matrix. - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/matrixmode.html} - - @type mode: Enumerated constant - @param mode: Specifies which matrix stack is the target for subsequent matrix operations. - """ - -def glMultMatrix (m): - """ - B{glMultMatrixd, glMultMatrixf} - - Multiply the current matrix with the specified matrix - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/multmatrix.html} - - @type m: Buffer object. Depends on function prototype. - @param m: Points to 16 consecutive values that are used as the elements of a 4x4 column - major matrix. - """ - -def glNewList(list, mode): - """ - Create or replace a display list - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/newlist.html} - - @type list: unsigned int - @param list: Specifies the display list name - @type mode: Enumerated constant - @param mode: Specifies the compilation mode. - """ - -def glNormal3 (nx, ny, nz, v): - """ - B{Normal3b, Normal3bv, Normal3d, Normal3dv, Normal3f, Normal3fv, Normal3i, Normal3iv, - Normal3s, Normal3sv} - - Set the current normal vector - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/normal.html} - - @type nx, ny, nz: Depends on function prototype. (non - 'v' prototypes only) - @param nx, ny, nz: Specify the x, y, and z coordinates of the new current normal. - The initial value of the current normal is the unit vector, (0, 0, 1). - @type v: Buffer object. Depends on function prototype. ('v' prototypes) - @param v: Specifies a pointer to an array of three elements: the x, y, and z coordinates - of the new current normal. - """ - -def glOrtho(left, right, bottom, top, zNear, zFar): - """ - Multiply the current matrix with an orthographic matrix - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/ortho.html} - - @type left, right: double (float) - @param left, right: Specify the coordinates for the left and - right vertical clipping planes. - @type bottom, top: double (float) - @param bottom, top: Specify the coordinates for the bottom and top - horizontal clipping planes. - @type zNear, zFar: double (float) - @param zNear, zFar: Specify the distances to the nearer and farther - depth clipping planes. These values are negative if the plane is to be behind the viewer. - """ - -def glPassThrough(token): - """ - Place a marker in the feedback buffer - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/passthrough.html} - - @type token: float - @param token: Specifies a marker value to be placed in the feedback - buffer following a GL_PASS_THROUGH_TOKEN. - """ - -def glPixelMap (map, mapsize, values): - """ - B{glPixelMapfv, glPixelMapuiv, glPixelMapusv} - - Set up pixel transfer maps - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pixelmap.html} - - @type map: Enumerated constant - @param map: Specifies a symbolic map name. - @type mapsize: int - @param mapsize: Specifies the size of the map being defined. - @type values: Buffer object. Depends on function prototype. - @param values: Specifies an array of mapsize values. - """ - -def glPixelStore (pname, param): - """ - B{glPixelStoref, glPixelStorei} - - Set pixel storage modes - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pixelstore.html} - - @type pname: Enumerated constant - @param pname: Specifies the symbolic name of the parameter to be set. - Six values affect the packing of pixel data into memory. - Six more affect the unpacking of pixel data from memory. - @type param: Depends on function prototype. - @param param: Specifies the value that pname is set to. - """ - -def glPixelTransfer (pname, param): - """ - B{glPixelTransferf, glPixelTransferi} - - Set pixel transfer modes - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pixeltransfer.html} - - @type pname: Enumerated constant - @param pname: Specifies the symbolic name of the pixel transfer parameter to be set. - @type param: Depends on function prototype. - @param param: Specifies the value that pname is set to. - """ - -def glPixelZoom(xfactor, yfactor): - """ - Specify the pixel zoom factors - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pixelzoom.html} - - @type xfactor, yfactor: float - @param xfactor, yfactor: Specify the x and y zoom factors for pixel write operations. - """ - -def glPointSize(size): - """ - Specify the diameter of rasterized points - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pointsize.html} - - @type size: float - @param size: Specifies the diameter of rasterized points. The initial value is 1. - """ - -def glPolygonMode(face, mode): - """ - Select a polygon rasterization mode - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/polygonmode.html} - - @type face: Enumerated constant - @param face: Specifies the polygons that mode applies to. - Must be GL_FRONT for front-facing polygons, GL_BACK for back- facing polygons, - or GL_FRONT_AND_BACK for front- and back-facing polygons. - @type mode: Enumerated constant - @param mode: Specifies how polygons will be rasterized. - The initial value is GL_FILL for both front- and back- facing polygons. - """ - -def glPolygonOffset(factor, units): - """ - Set the scale and units used to calculate depth values - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/polygonoffset.html} - - @type factor: float - @param factor: Specifies a scale factor that is used to create a variable depth - offset for each polygon. The initial value is 0. - @type units: float - @param units: Is multiplied by an implementation-specific value to create a constant - depth offset. The initial value is 0. - """ - -def glPolygonStipple(mask): - """ - Set the polygon stippling pattern - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/polygonstipple.html} - - @type mask: Buffer object I{type GL_BYTE} - @param mask: Specifies a pointer to a 32x32 stipple pattern that will be unpacked - from memory in the same way that glDrawPixels unpacks pixels. - """ - -def glPopAttrib(): - """ - Pop the server attribute stack - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushattrib.html} - """ - -def glPopClientAttrib(): - """ - Pop the client attribute stack - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushclientattrib.html} - """ - -def glPopMatrix(): - """ - Pop the current matrix stack - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushmatrix.html} - """ - -def glPopName(): - """ - Pop the name stack - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushname.html} - """ - -def glPrioritizeTextures(n, textures, priorities): - """ - Set texture residence priority - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/prioritizetextures.html} - - @type n: int - @param n:Specifies the number of textures to be prioritized. - @type textures: Buffer I{type GL_INT} - @param textures: Specifies an array containing the names of the textures to be prioritized. - @type priorities: Buffer I{type GL_FLOAT} - @param priorities: Specifies an array containing the texture priorities. A priority given - in an element of priorities applies to the texture named by the corresponding element of textures. - """ - -def glPushAttrib(mask): - """ - Push the server attribute stack - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushattrib.html} - - @type mask: Enumerated constant(s) - @param mask: Specifies a mask that indicates which attributes to save. - """ - -def glPushClientAttrib(mask): - """ - Push the client attribute stack - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushclientattrib.html} - - @type mask: Enumerated constant(s) - @param mask: Specifies a mask that indicates which attributes to save. - """ - -def glPushMatrix(): - """ - Push the current matrix stack - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushmatrix.html} - """ - -def glPushName(name): - """ - Push the name stack - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/pushname.html} - - @type name: unsigned int - @param name: Specifies a name that will be pushed onto the name stack. - """ - -def glRasterPos (x,y,z,w): - """ - B{glRasterPos2d, glRasterPos2f, glRasterPos2i, glRasterPos2s, glRasterPos3d, - glRasterPos3f, glRasterPos3i, glRasterPos3s, glRasterPos4d, glRasterPos4f, - glRasterPos4i, glRasterPos4s, glRasterPos2dv, glRasterPos2fv, glRasterPos2iv, - glRasterPos2sv, glRasterPos3dv, glRasterPos3fv, glRasterPos3iv, glRasterPos3sv, - glRasterPos4dv, glRasterPos4fv, glRasterPos4iv, glRasterPos4sv} - - Specify the raster position for pixel operations - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/rasterpos.html} - - @type x, y, z, w: Depends on function prototype. (z and w for '3' and '4' prototypes only) - @param x, y, z, w: Specify the x,y,z, and w object coordinates (if present) for the - raster position. If function prototype ends in 'v' specifies a pointer to an array of two, - three, or four elements, specifying x, y, z, and w coordinates, respectively. - @note: - If you are drawing to the 3d view with a Scriptlink of a space handler - the zoom level of the panels will scale the glRasterPos by the view matrix. - so a X of 10 will not always offset 10 pixels as you would expect. - - To work around this get the scale value of the view matrix and use it to scale your pixel values. - - Workaround:: - - import Blender - from Blender.BGL import * - xval, yval= 100, 40 - # Get the scale of the view matrix - viewMatrix = Buffer(GL_FLOAT, 16) - glGetFloatv(GL_MODELVIEW_MATRIX, viewMatrix) - f = 1/viewMatrix[0] - glRasterPos2f(xval*f, yval*f) # Instead of the usual glRasterPos2i(xval, yval) - """ - -def glReadBuffer(mode): - """ - Select a color buffer source for pixels. - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/readbuffer.html} - - @type mode: Enumerated constant - @param mode: Specifies a color buffer. - """ - -def glReadPixels(x, y, width, height, format, type, pixels): - """ - Read a block of pixels from the frame buffer - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/readpixels.html} - - @type x, y: int - @param x, y:Specify the window coordinates of the first pixel that is read - from the frame buffer. This location is the lower left corner of a rectangular - block of pixels. - @type width, height: int - @param width, height: Specify the dimensions of the pixel rectangle. width and - height of one correspond to a single pixel. - @type format: Enumerated constant - @param format: Specifies the format of the pixel data. - @type type: Enumerated constant - @param type: Specifies the data type of the pixel data. - @type pixels: Buffer object - @param pixels: Returns the pixel data. - """ - -def glRect (x1,y1,x2,y2,v1,v2): - """ - B{glRectd, glRectf, glRecti, glRects, glRectdv, glRectfv, glRectiv, glRectsv} - - Draw a rectangle - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/rect.html} - - @type x1, y1: Depends on function prototype. (for non 'v' prototypes only) - @param x1, y1: Specify one vertex of a rectangle - @type x2, y2: Depends on function prototype. (for non 'v' prototypes only) - @param x2, y2: Specify the opposite vertex of the rectangle - @type v1, v2: Depends on function prototype. (for 'v' prototypes only) - @param v1, v2: Specifies a pointer to one vertex of a rectangle and the pointer - to the opposite vertex of the rectangle - """ - -def glRenderMode(mode): - """ - Set rasterization mode - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/rendermode.html} - - @type mode: Enumerated constant - @param mode: Specifies the rasterization mode. - """ - -def glRotate (angle, x, y, z): - """ - B{glRotated, glRotatef} - - Multiply the current matrix by a rotation matrix - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/rotate.html} - - @type angle: Depends on function prototype. - @param angle: Specifies the angle of rotation in degrees. - @type x, y, z: Depends on function prototype. - @param x, y, z: Specify the x, y, and z coordinates of a vector respectively. - """ - -def glScale (x,y,z): - """ - B{glScaled, glScalef} - - Multiply the current matrix by a general scaling matrix - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/scale.html} - - @type x, y, z: Depends on function prototype. - @param x, y, z: Specify scale factors along the x, y, and z axes, respectively. - """ - -def glScissor(x,y,width,height): - """ - Define the scissor box - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/scissor.html} - - @type x, y: int - @param x, y: Specify the lower left corner of the scissor box. Initially (0, 0). - @type width, height: int - @param width height: Specify the width and height of the scissor box. When a - GL context is first attached to a window, width and height are set to the - dimensions of that window. - """ - -def glSelectBuffer(size, buffer): - """ - Establish a buffer for selection mode values - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/selectbuffer.html} - - @type size: int - @param size: Specifies the size of buffer - @type buffer: Buffer I{type GL_INT} - @param buffer: Returns the selection data - """ - -def glShadeModel(mode): - """ - Select flat or smooth shading - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/shademodel.html} - - @type mode: Enumerated constant - @param mode: Specifies a symbolic value representing a shading technique. - """ - -def glStencilFuc(func, ref, mask): - """ - Set function and reference value for stencil testing - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/stencilfunc.html} - - @type func: Enumerated constant - @param func:Specifies the test function. - @type ref: int - @param ref:Specifies the reference value for the stencil test. ref is clamped to - the range [0,2n-1], where n is the number of bitplanes in the stencil buffer. - The initial value is 0. - @type mask: unsigned int - @param mask:Specifies a mask that is ANDed with both the reference value and - the stored stencil value when the test is done. The initial value is all 1's. - """ - -def glStencilMask(mask): - """ - Control the writing of individual bits in the stencil planes - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/stencilmask.html} - - @type mask: unsigned int - @param mask: Specifies a bit mask to enable and disable writing of individual bits - in the stencil planes. Initially, the mask is all 1's. - """ - -def glStencilOp(fail, zfail, zpass): - """ - Set stencil test actions - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/stencilop.html} - - @type fail: Enumerated constant - @param fail: Specifies the action to take when the stencil test fails. - The initial value is GL_KEEP. - @type zfail: Enumerated constant - @param zfail: Specifies the stencil action when the stencil test passes, but the - depth test fails. zfail accepts the same symbolic constants as fail. - The initial value is GL_KEEP. - @type zpass: Enumerated constant - @param zpass: Specifies the stencil action when both the stencil test and the - depth test pass, or when the stencil test passes and either there is no depth - buffer or depth testing is not enabled. zpass accepts the same symbolic constants - as fail. The initial value is GL_KEEP. - """ - -def glTexCoord (s,t,r,q,v): - """ - B{glTexCoord1d, glTexCoord1f, glTexCoord1i, glTexCoord1s, glTexCoord2d, glTexCoord2f, - glTexCoord2i, glTexCoord2s, glTexCoord3d, glTexCoord3f, glTexCoord3i, glTexCoord3s, - glTexCoord4d, glTexCoord4f, glTexCoord4i, glTexCoord4s, glTexCoord1dv, glTexCoord1fv, - glTexCoord1iv, glTexCoord1sv, glTexCoord2dv, glTexCoord2fv, glTexCoord2iv, - glTexCoord2sv, glTexCoord3dv, glTexCoord3fv, glTexCoord3iv, glTexCoord3sv, - glTexCoord4dv, glTexCoord4fv, glTexCoord4iv, glTexCoord4sv} - - Set the current texture coordinates - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/texcoord.html} - - @type s, t, r, q: Depends on function prototype. (r and q for '3' and '4' prototypes only) - @param s, t, r, q: Specify s, t, r, and q texture coordinates. Not all parameters are - present in all forms of the command. - @type v: Buffer object. Depends on function prototype. (for 'v' prototypes only) - @param v: Specifies a pointer to an array of one, two, three, or four elements, - which in turn specify the s, t, r, and q texture coordinates. - """ - -def glTexEnv (target, pname, param): - """ - B{glTextEnvf, glTextEnvi, glTextEnvfv, glTextEnviv} - - Set texture environment parameters - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/texenv.html} - - @type target: Enumerated constant - @param target: Specifies a texture environment. Must be GL_TEXTURE_ENV. - @type pname: Enumerated constant - @param pname: Specifies the symbolic name of a single-valued texture environment - parameter. Must be GL_TEXTURE_ENV_MODE. - @type param: Depends on function prototype. - @param param: Specifies a single symbolic constant. If function prototype ends in 'v' - specifies a pointer to a parameter array that contains either a single symbolic - constant or an RGBA color - """ - -def glTexGen (coord, pname, param): - """ - B{glTexGend, glTexGenf, glTexGeni, glTexGendv, glTexGenfv, glTexGeniv} - - Control the generation of texture coordinates - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/texgen.html} - - @type coord: Enumerated constant - @param coord: Specifies a texture coordinate. - @type pname: Enumerated constant - @param pname: Specifies the symbolic name of the texture- coordinate generation function. - @type param: Depends on function prototype. - @param param: Specifies a single-valued texture generation parameter. - If function prototype ends in 'v' specifies a pointer to an array of texture - generation parameters. If pname is GL_TEXTURE_GEN_MODE, then the array must - contain a single symbolic constant. Otherwise, params holds the coefficients - for the texture-coordinate generation function specified by pname. - """ - -def glTexImage1D(target, level, internalformat, width, border, format, type, pixels): - """ - Specify a one-dimensional texture image - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/teximage1d.html} - - @type target: Enumerated constant - @param target: Specifies the target texture. - @type level: int - @param level: Specifies the level-of-detail number. Level 0 is the base image level. - Level n is the nth mipmap reduction image. - @type internalformat: int - @param internalformat: Specifies the number of color components in the texture. - @type width: int - @param width: Specifies the width of the texture image. Must be 2n+2(border) for - some integer n. All implementations support texture images that are at least 64 - texels wide. The height of the 1D texture image is 1. - @type border: int - @param border: Specifies the width of the border. Must be either 0 or 1. - @type format: Enumerated constant - @param format: Specifies the format of the pixel data. - @type type: Enumerated constant - @param type: Specifies the data type of the pixel data. - @type pixels: Buffer object. - @param pixels: Specifies a pointer to the image data in memory. - """ - -def glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels): - """ - Specify a two-dimensional texture image - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/teximage2d.html} - - @type target: Enumerated constant - @param target: Specifies the target texture. - @type level: int - @param level: Specifies the level-of-detail number. Level 0 is the base image level. - Level n is the nth mipmap reduction image. - @type internalformat: int - @param internalformat: Specifies the number of color components in the texture. - @type width: int - @param width: Specifies the width of the texture image. Must be 2n+2(border) for - some integer n. All implementations support texture images that are at least 64 - texels wide. - @type height: int - @param height: Specifies the height of the texture image. Must be 2m+2(border) for - some integer m. All implementations support texture images that are at least 64 - texels high. - @type border: int - @param border: Specifies the width of the border. Must be either 0 or 1. - @type format: Enumerated constant - @param format: Specifies the format of the pixel data. - @type type: Enumerated constant - @param type: Specifies the data type of the pixel data. - @type pixels: Buffer object. - @param pixels: Specifies a pointer to the image data in memory. - """ - -def glTexParameter (target, pname, param): - """ - B{glTexParameterf, glTexParameteri, glTexParameterfv, glTexParameteriv} - - Set texture parameters - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/texparameter.html} - - @type target: Enumerated constant - @param target: Specifies the target texture. - @type pname: Enumerated constant - @param pname: Specifies the symbolic name of a single-valued texture parameter. - @type param: Depends on function prototype. - @param param: Specifies the value of pname. If function prototype ends in 'v' specifies - a pointer to an array where the value or values of pname are stored. - """ - -def glTranslate (x, y, z): - """ - B{glTranslatef, glTranslated} - - Multiply the current matrix by a translation matrix - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/translate.html} - - @type x, y, z: Depends on function prototype. - @param x, y, z: Specify the x, y, and z coordinates of a translation vector. - """ - -def glVertex (x,y,z,w,v): - """ - B{glVertex2d, glVertex2f, glVertex2i, glVertex2s, glVertex3d, glVertex3f, glVertex3i, - glVertex3s, glVertex4d, glVertex4f, glVertex4i, glVertex4s, glVertex2dv, glVertex2fv, - glVertex2iv, glVertex2sv, glVertex3dv, glVertex3fv, glVertex3iv, glVertex3sv, glVertex4dv, - glVertex4fv, glVertex4iv, glVertex4sv} - - Specify a vertex - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/vertex.html} - - @type x, y, z, w: Depends on function prototype (z and w for '3' and '4' prototypes only) - @param x, y, z, w: Specify x, y, z, and w coordinates of a vertex. Not all parameters - are present in all forms of the command. - @type v: Buffer object. Depends of function prototype (for 'v' prototypes only) - @param v: Specifies a pointer to an array of two, three, or four elements. The - elements of a two-element array are x and y; of a three-element array, x, y, and z; - and of a four-element array, x, y, z, and w. - """ - -def glViewport(x,y,width,height): - """ - Set the viewport - @see: U{www.opengl.org/documentation/specs/man_pages/hardcopy/GL/html/gl/viewport.html} - - @type x, y: int - @param x, y: Specify the lower left corner of the viewport rectangle, - in pixels. The initial value is (0,0). - @type width, height: int - @param width, height: Specify the width and height of the viewport. When a GL context - is first attached to a window, width and height are set to the dimensions of that window. - """ - -def gluPerspective(fovY, aspect, zNear, zFar): - """ - Set up a perspective projection matrix. - @see: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5577288} - - @type fovY: double - @param fovY: Specifies the field of view angle, in degrees, in the y direction. - @type aspect: double - @param aspect: Specifies the aspect ratio that determines the field of view in the x direction. - The aspect ratio is the ratio of x (width) to y (height). - @type zNear: double - @param zNear: Specifies the distance from the viewer to the near clipping plane (always positive). - @type zFar: double - @param zFar: Specifies the distance from the viewer to the far clipping plane (always positive). - """ - -def gluLookAt(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz): - """ - Define a viewing transformation - @see: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5573042} - - @type eyex, eyey, eyez: double - @param eyex, eyey, eyez: Specifies the position of the eye point. - @type centerx, centery, centerz: double - @param centerx, centery, centerz: Specifies the position of the reference point. - @type upx, upy, upz: double - @param upx, upy, upz: Specifies the direction of the up vector. - """ - -def gluOrtho2D(left, right, bottom, top): - """ - Define a 2-D orthographic projection matrix - @see: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5578074} - - @type left, right: double - @param left, right: Specify the coordinates for the left and right vertical clipping planes. - @type bottom, top: double - @param bottom, top: Specify the coordinates for the bottom and top horizontal clipping planes. - """ - -def gluPickMatrix(x, y, width, height, viewport): - """ - Define a picking region - @see: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5578074} - - @type x, y: double - @param x, y: Specify the center of a picking region in window coordinates. - @type width, height: double - @param width, height: Specify the width and height, respectively, of the picking region in window coordinates. - @type viewport: Buffer object. [int] - @param viewport: Specifies the current viewport. - """ - -def gluProject(objx, objy, objz, modelMatrix, projMatrix, viewport, winx, winy, winz): - """ - Map object coordinates to window coordinates. - @see: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5578074} - - @type objx, objy, objz: double - @param objx, objy, objz: Specify the object coordinates. - @type modelMatrix: Buffer object. [double] - @param modelMatrix: Specifies the current modelview matrix (as from a glGetDoublev call). - @type projMatrix: Buffer object. [double] - @param projMatrix: Specifies the current projection matrix (as from a glGetDoublev call). - @type viewport: Buffer object. [int] - @param viewport: Specifies the current viewport (as from a glGetIntegerv call). - @type winx, winy, winz: Buffer object. [double] - @param winx, winy, winz: Return the computed window coordinates. - """ - -def gluUnProject(winx, winy, winz, modelMatrix, projMatrix, viewport, objx, objy, objz): - """ - Map object coordinates to window - coordinates. - @see: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5582204} - - @type winx, winy, winz: double - @param winx, winy, winz: Specify the window coordinates to be mapped. - @type modelMatrix: Buffer object. [double] - @param modelMatrix: Specifies the current modelview matrix (as from a glGetDoublev call). - @type projMatrix: Buffer object. [double] - @param projMatrix: Specifies the current projection matrix (as from a glGetDoublev call). - @type viewport: Buffer object. [int] - @param viewport: Specifies the current viewport (as from a glGetIntegerv call). - @type objx, objy, objz: Buffer object. [double] - @param objx, objy, objz: Return the computed object coordinates. - """ +..note:: + You can use the :class:`Image` type to load and set textures. + See :class:`Image.gl_load` and :class:`Image.gl_load`, + for example. + `OpenGL.org `_ + `NeHe GameDev `_ + + +.. function:: glAccum(op, value): + + Operate on the accumulation buffer. + + .. seealso:: `OpenGL Docs `_ + + :type op: Enumerated constant + :arg op: The accumulation buffer operation. + :type value: float + :arg value: a value used in the accumulation buffer operation. + + +.. function:: glAlphaFunc(func, ref): + + Specify the alpha test function. + + .. seealso:: `OpenGL Docs `_ + + :type func: Enumerated constant + :arg func: Specifies the alpha comparison function. + :type ref: float + :arg ref: The reference value that incoming alpha values are compared to. + Clamped between 0 and 1. + + +.. function:: glAreTexturesResident(n, textures, residences): + + Determine if textures are loaded in texture memory + + .. seealso:: `OpenGL Docs `_ + + :type n: int + :arg n: Specifies the number of textures to be queried. + :type textures: :class:`Buffer` object I{type GL_INT} + :arg textures: Specifies an array containing the names of the textures to be queried + :type residences: :class:`Buffer` object I{type GL_INT}(boolean) + :arg residences: An array in which the texture residence status in returned. + The residence status of a texture named by an element of textures is + returned in the corresponding element of residences. + + +.. function:: glBegin(mode): + + Delimit the vertices of a primitive or a group of like primatives + + .. seealso:: `OpenGL Docs `_ + + :type mode: Enumerated constant + :arg mode: Specifies the primitive that will be create from vertices between glBegin and + glEnd. + + +.. function:: glBindTexture(target, texture): + + Bind a named texture to a texturing target + + .. seealso:: `OpenGL Docs `_ + + :type target: Enumerated constant + :arg target: Specifies the target to which the texture is bound. + :type texture: unsigned int + :arg texture: Specifies the name of a texture. + + +.. function:: glBitmap(width, height, xorig, yorig, xmove, ymove, bitmap): + + Draw a bitmap + + .. seealso:: `OpenGL Docs `_ + + :type width, height: int + :arg width, height: Specify the pixel width and height of the bitmap image. + :type xorig, yorig: float + :arg xorig, yorig: Specify the location of the origin in the bitmap image. The origin is measured + from the lower left corner of the bitmap, with right and up being the positive axes. + :type xmove, ymove: float + :arg xmove, ymove: Specify the x and y offsets to be added to the current raster position after + the bitmap is drawn. + :type bitmap: :class:`Buffer` object I{type GL_BYTE} + :arg bitmap: Specifies the address of the bitmap image. + + +.. function:: glBlendFunc(sfactor, dfactor): + + Specify pixel arithmetic + + .. seealso:: `OpenGL Docs `_ + + :type sfactor: Enumerated constant + :arg sfactor: Specifies how the red, green, blue, and alpha source blending factors are + computed. + :type dfactor: Enumerated constant + :arg dfactor: Specifies how the red, green, blue, and alpha destination + blending factors are computed. + + +.. function:: glCallList(list): + + Execute a display list + + .. seealso:: `OpenGL Docs `_ + + :type list: unsigned int + :arg list: Specifies the integer name of the display list to be executed. + + +.. function:: glCallLists(n, type, lists): + + Execute a list of display lists + + .. seealso:: `OpenGL Docs `_ + + :type n: int + :arg n: Specifies the number of display lists to be executed. + :type type: Enumerated constant + :arg type: Specifies the type of values in lists. + :type lists: :class:`Buffer` object + :arg lists: Specifies the address of an array of name offsets in the display list. + The pointer type is void because the offsets can be bytes, shorts, ints, or floats, + depending on the value of type. + + +.. function:: glClear(mask): + + Clear buffers to preset values + + .. seealso:: `OpenGL Docs `_ + + :type mask: Enumerated constant(s) + :arg mask: Bitwise OR of masks that indicate the buffers to be cleared. + + +.. function:: glClearAccum(red, green, blue, alpha): + + Specify clear values for the accumulation buffer + + .. seealso:: `OpenGL Docs `_ + + :type red, green, blue, alpha: float + :arg red, green, blue, alpha: Specify the red, green, blue, and alpha values used when the + accumulation buffer is cleared. The initial values are all 0. + + +.. function:: glClearColor(red, green, blue, alpha): + + Specify clear values for the color buffers + + .. seealso:: `OpenGL Docs `_ + + :type red, green, blue, alpha: float + :arg red, green, blue, alpha: Specify the red, green, blue, and alpha values used when the + color buffers are cleared. The initial values are all 0. + + +.. function:: glClearDepth(depth): + + Specify the clear value for the depth buffer + + .. seealso:: `OpenGL Docs `_ + + :type depth: int + :arg depth: Specifies the depth value used when the depth buffer is cleared. + The initial value is 1. + + +.. function:: glClearIndex(c): + + Specify the clear value for the color index buffers + + .. seealso:: `OpenGL Docs `_ + + :type c: float + :arg c: Specifies the index used when the color index buffers are cleared. + The initial value is 0. + + +.. function:: glClearStencil(s): + + Specify the clear value for the stencil buffer + + .. seealso:: `OpenGL Docs `_ + + :type s: int + :arg s: Specifies the index used when the stencil buffer is cleared. The initial value is 0. + + +.. function:: glClipPlane (plane, equation): + + Specify a plane against which all geometry is clipped + + .. seealso:: `OpenGL Docs `_ + + :type plane: Enumerated constant + :arg plane: Specifies which clipping plane is being positioned. + :type equation: :class:`Buffer` object I{type GL_FLOAT}(double) + :arg equation: Specifies the address of an array of four double- precision + floating-point values. These values are interpreted as a plane equation. + + +.. function:: glColor (red, green, blue, alpha): + + B{glColor3b, glColor3d, glColor3f, glColor3i, glColor3s, glColor3ub, glColor3ui, glColor3us, + glColor4b, glColor4d, glColor4f, glColor4i, glColor4s, glColor4ub, glColor4ui, glColor4us, + glColor3bv, glColor3dv, glColor3fv, glColor3iv, glColor3sv, glColor3ubv, glColor3uiv, + glColor3usv, glColor4bv, glColor4dv, glColor4fv, glColor4iv, glColor4sv, glColor4ubv, + glColor4uiv, glColor4usv} + + Set a new color. + + .. seealso:: `OpenGL Docs `_ + + :type red, green, blue, alpha: Depends on function prototype. + :arg red, green, blue: Specify new red, green, and blue values for the current color. + :arg alpha: Specifies a new alpha value for the current color. Included only in the + four-argument glColor4 commands. (With '4' colors only) + + +.. function:: glColorMask(red, green, blue, alpha): + + Enable and disable writing of frame buffer color components + + .. seealso:: `OpenGL Docs `_ + + :type red, green, blue, alpha: int (boolean) + :arg red, green, blue, alpha: Specify whether red, green, blue, and alpha can or cannot be + written into the frame buffer. The initial values are all GL_TRUE, indicating that the + color components can be written. + + +.. function:: glColorMaterial(face, mode): + + Cause a material color to track the current color + + .. seealso:: `OpenGL Docs `_ + + :type face: Enumerated constant + :arg face: Specifies whether front, back, or both front and back material parameters should + track the current color. + :type mode: Enumerated constant + :arg mode: Specifies which of several material parameters track the current color. + + +.. function:: glCopyPixels(x, y, width, height, type): + + Copy pixels in the frame buffer + + .. seealso:: `OpenGL Docs `_ + + :type x, y: int + :arg x, y: Specify the window coordinates of the lower left corner of the rectangular + region of pixels to be copied. + :type width, height: int + :arg width,height: Specify the dimensions of the rectangular region of pixels to be copied. + Both must be non-negative. + :type type: Enumerated constant + :arg type: Specifies whether color values, depth values, or stencil values are to be copied. + + + def glCopyTexImage2D(target, level, internalformat, x, y, width, height, border): + + Copy pixels into a 2D texture image + + .. seealso:: `OpenGL Docs `_ + + :type target: Enumerated constant + :arg target: Specifies the target texture. + :type level: int + :arg level: Specifies the level-of-detail number. Level 0 is the base image level. + Level n is the nth mipmap reduction image. + :type internalformat: int + :arg internalformat: Specifies the number of color components in the texture. + :type width: int + :type x, y: int + :arg x, y: Specify the window coordinates of the first pixel that is copied + from the frame buffer. This location is the lower left corner of a rectangular + block of pixels. + :arg width: Specifies the width of the texture image. Must be 2n+2(border) for + some integer n. All implementations support texture images that are at least 64 + texels wide. + :type height: int + :arg height: Specifies the height of the texture image. Must be 2m+2(border) for + some integer m. All implementations support texture images that are at least 64 + texels high. + :type border: int + :arg border: Specifies the width of the border. Must be either 0 or 1. + + +.. function:: glCullFace(mode): + + Specify whether front- or back-facing facets can be culled + + .. seealso:: `OpenGL Docs `_ + + :type mode: Enumerated constant + :arg mode: Specifies whether front- or back-facing facets are candidates for culling. + + +.. function:: glDeleteLists(list, range): + + Delete a contiguous group of display lists + + .. seealso:: `OpenGL Docs `_ + + :type list: unsigned int + :arg list: Specifies the integer name of the first display list to delete + :type range: int + :arg range: Specifies the number of display lists to delete + + +.. function:: glDeleteTextures(n, textures): + + Delete named textures + + .. seealso:: `OpenGL Docs `_ + + :type n: int + :arg n: Specifies the number of textures to be deleted + :type textures: :class:`Buffer` I{GL_INT} + :arg textures: Specifies an array of textures to be deleted + + +.. function:: glDepthFunc(func): + + Specify the value used for depth buffer comparisons + + .. seealso:: `OpenGL Docs `_ + + :type func: Enumerated constant + :arg func: Specifies the depth comparison function. + + +.. function:: glDepthMask(flag): + + Enable or disable writing into the depth buffer + + .. seealso:: `OpenGL Docs `_ + + :type flag: int (boolean) + :arg flag: Specifies whether the depth buffer is enabled for writing. If flag is GL_FALSE, + depth buffer writing is disabled. Otherwise, it is enabled. Initially, depth buffer + writing is enabled. + + +.. function:: glDepthRange(zNear, zFar): + + Specify mapping of depth values from normalized device coordinates to window coordinates + + .. seealso:: `OpenGL Docs `_ + + :type zNear: int + :arg zNear: Specifies the mapping of the near clipping plane to window coordinates. + The initial value is 0. + :type zFar: int + :arg zFar: Specifies the mapping of the far clipping plane to window coordinates. + The initial value is 1. + + +.. function:: glDisable(cap): + + Disable server-side GL capabilities + + .. seealso:: `OpenGL Docs `_ + + :type cap: Enumerated constant + :arg cap: Specifies a symbolic constant indicating a GL capability. + + +.. function:: glDrawBuffer(mode): + + Specify which color buffers are to be drawn into + + .. seealso:: `OpenGL Docs `_ + + :type mode: Enumerated constant + :arg mode: Specifies up to four color buffers to be drawn into. + + +.. function:: glDrawPixels(width, height, format, type, pixels): + + Write a block of pixels to the frame buffer + + .. seealso:: `OpenGL Docs `_ + + :type width, height: int + :arg width, height: Specify the dimensions of the pixel rectangle to be + written into the frame buffer. + :type format: Enumerated constant + :arg format: Specifies the format of the pixel data. + :type type: Enumerated constant + :arg type: Specifies the data type for pixels. + :type pixels: :class:`Buffer` object + :arg pixels: Specifies a pointer to the pixel data. + + +.. function:: glEdgeFlag (flag): + + B{glEdgeFlag, glEdgeFlagv} + + Flag edges as either boundary or non-boundary + + .. seealso:: `OpenGL Docs `_ + + :type flag: Depends of function prototype + :arg flag: Specifies the current edge flag value.The initial value is GL_TRUE. + + +.. function:: glEnable(cap): + + Enable server-side GL capabilities + + .. seealso:: `OpenGL Docs `_ + + :type cap: Enumerated constant + :arg cap: Specifies a symbolic constant indicating a GL capability. + + +.. function:: glEnd(): + + Delimit the vertices of a primitive or group of like primitives + + .. seealso:: `OpenGL Docs `_ + + +.. function:: glEndList(): + + Create or replace a display list + + .. seealso:: `OpenGL Docs `_ + + +.. function:: glEvalCoord (u,v): + + B{glEvalCoord1d, glEvalCoord1f, glEvalCoord2d, glEvalCoord2f, glEvalCoord1dv, glEvalCoord1fv, + glEvalCoord2dv, glEvalCoord2fv} + + Evaluate enabled one- and two-dimensional maps + + .. seealso:: `OpenGL Docs `_ + + :type u: Depends on function prototype. + :arg u: Specifies a value that is the domain coordinate u to the basis function defined + in a previous glMap1 or glMap2 command. If the function prototype ends in 'v' then + u specifies a pointer to an array containing either one or two domain coordinates. The first + coordinate is u. The second coordinate is v, which is present only in glEvalCoord2 versions. + :type v: Depends on function prototype. (only with '2' prototypes) + :arg v: Specifies a value that is the domain coordinate v to the basis function defined + in a previous glMap2 command. This argument is not present in a glEvalCoord1 command. + + +.. function:: glEvalMesh (mode, i1, i2): + + B{glEvalMesh1 or glEvalMesh2} + + Compute a one- or two-dimensional grid of points or lines + + .. seealso:: `OpenGL Docs `_ + + :type mode: Enumerated constant + :arg mode: In glEvalMesh1, specifies whether to compute a one-dimensional + mesh of points or lines. + :type i1, i2: int + :arg i1, i2: Specify the first and last integer values for the grid domain variable i. + + +.. function:: glEvalPoint (i, j): + + B{glEvalPoint1 and glEvalPoint2} + + Generate and evaluate a single point in a mesh + + .. seealso:: `OpenGL Docs `_ + + :type i: int + :arg i: Specifies the integer value for grid domain variable i. + :type j: int (only with '2' prototypes) + :arg j: Specifies the integer value for grid domain variable j (glEvalPoint2 only). + + +.. function:: glFeedbackBuffer (size, type, buffer): + + Controls feedback mode + + .. seealso:: `OpenGL Docs `_ + + :type size: int + :arg size: Specifies the maximum number of values that can be written into buffer. + :type type: Enumerated constant + :arg type: Specifies a symbolic constant that describes the information that + will be returned for each vertex. + :type buffer: :class:`Buffer` object I{GL_FLOAT} + :arg buffer: Returns the feedback data. + + +.. function:: glFinish(): + + Block until all GL execution is complete + + .. seealso:: `OpenGL Docs `_ + + +.. function:: glFlush(): + + Force Execution of GL commands in finite time + + .. seealso:: `OpenGL Docs `_ + + +.. function:: glFog (pname, param): + + B{glFogf, glFogi, glFogfv, glFogiv} + + Specify fog parameters + + .. seealso:: `OpenGL Docs `_ + + :type pname: Enumerated constant + :arg pname: Specifies a single-valued fog parameter. If the function prototype + ends in 'v' specifies a fog parameter. + :type param: Depends on function prototype. + :arg param: Specifies the value or values to be assigned to pname. GL_FOG_COLOR + requires an array of four values. All other parameters accept an array containing + only a single value. + + +.. function:: glFrontFace(mode): + + Define front- and back-facing polygons + + .. seealso:: `OpenGL Docs `_ + + :type mode: Enumerated constant + :arg mode: Specifies the orientation of front-facing polygons. + + +.. function:: glFrustum(left, right, bottom, top, zNear, zFar): + + Multiply the current matrix by a perspective matrix + + .. seealso:: `OpenGL Docs `_ + + :type left, right: double (float) + :arg left, right: Specify the coordinates for the left and right vertical + clipping planes. + :type top, bottom: double (float) + :arg top, bottom: Specify the coordinates for the bottom and top horizontal + clipping planes. + :type zNear, zFar: double (float) + :arg zNear, zFar: Specify the distances to the near and far depth clipping planes. + Both distances must be positive. + + +.. function:: glGenLists(range): + + Generate a contiguous set of empty display lists + + .. seealso:: `OpenGL Docs `_ + + :type range: int + :arg range: Specifies the number of contiguous empty display lists to be generated. + + +.. function:: glGenTextures(n, textures): + + Generate texture names + + .. seealso:: `OpenGL Docs `_ + + :type n: int + :arg n: Specifies the number of textures name to be generated. + :type textures: :class:`Buffer` object I{type GL_INT} + :arg textures: Specifies an array in which the generated textures names are stored. + + +.. function:: glGet (pname, param): + + B{glGetBooleanv, glGetfloatv, glGetFloatv, glGetIntegerv} + + Return the value or values of a selected parameter + + .. seealso:: `OpenGL Docs `_ + + :type pname: Enumerated constant + :arg pname: Specifies the parameter value to be returned. + :type param: Depends on function prototype. + :arg param: Returns the value or values of the specified parameter. + + +.. function:: glGetClipPlane(plane, equation): + + Return the coefficients of the specified clipping plane + + .. seealso:: `OpenGL Docs `_ + + :type plane: Enumerated constant + :arg plane: Specifies a clipping plane. The number of clipping planes depends on the + implementation, but at least six clipping planes are supported. They are identified by + symbolic names of the form GL_CLIP_PLANEi where 0 < i < GL_MAX_CLIP_PLANES. + :type equation: :class:`Buffer` object I{type GL_FLOAT} + :arg equation: Returns four float (double)-precision values that are the coefficients of the + plane equation of plane in eye coordinates. The initial value is (0, 0, 0, 0). + + +.. function:: glGetError(): + + Return error information + + .. seealso:: `OpenGL Docs `_ + + +.. function:: glGetLight (light, pname, params): + + B{glGetLightfv and glGetLightiv} + + Return light source parameter values + + .. seealso:: `OpenGL Docs `_ + + :type light: Enumerated constant + :arg light: Specifies a light source. The number of possible lights depends on the + implementation, but at least eight lights are supported. They are identified by symbolic + names of the form GL_LIGHTi where 0 < i < GL_MAX_LIGHTS. + :type pname: Enumerated constant + :arg pname: Specifies a light source parameter for light. + :type params: :class:`Buffer` object. Depends on function prototype. + :arg params: Returns the requested data. + + +.. function:: glGetMap (target, query, v): + + B{glGetMapdv, glGetMapfv, glGetMapiv} + + Return evaluator parameters + + .. seealso:: `OpenGL Docs `_ + + :type target: Enumerated constant + :arg target: Specifies the symbolic name of a map. + :type query: Enumerated constant + :arg query: Specifies which parameter to return. + :type v: :class:`Buffer` object. Depends on function prototype. + :arg v: Returns the requested data. + + +.. function:: glGetMaterial (face, pname, params): + + B{glGetMaterialfv, glGetMaterialiv} + + Return material parameters + + .. seealso:: `OpenGL Docs `_ + + :type face: Enumerated constant + :arg face: Specifies which of the two materials is being queried. + representing the front and back materials, respectively. + :type pname: Enumerated constant + :arg pname: Specifies the material parameter to return. + :type params: :class:`Buffer` object. Depends on function prototype. + :arg params: Returns the requested data. + + +.. function:: glGetPixelMap (map, values): + + B{glGetPixelMapfv, glGetPixelMapuiv, glGetPixelMapusv} + + Return the specified pixel map + + .. seealso:: `OpenGL Docs `_ + + :type map: Enumerated constant + :arg map: Specifies the name of the pixel map to return. + :type values: :class:`Buffer` object. Depends on function prototype. + :arg values: Returns the pixel map contents. + + +.. function:: glGetPolygonStipple(mask): + + Return the polygon stipple pattern + + .. seealso:: `OpenGL Docs `_ + + :type mask: :class:`Buffer` object I{type GL_BYTE} + :arg mask: Returns the stipple pattern. The initial value is all 1's. + + +.. function:: glGetString(name): + + Return a string describing the current GL connection + + .. seealso:: `OpenGL Docs `_ + + :type name: Enumerated constant + :arg name: Specifies a symbolic constant. + + + +.. function:: glGetTexEnv (target, pname, params): + + B{glGetTexEnvfv, glGetTexEnviv} + + Return texture environment parameters + + .. seealso:: `OpenGL Docs `_ + + :type target: Enumerated constant + :arg target: Specifies a texture environment. Must be GL_TEXTURE_ENV. + :type pname: Enumerated constant + :arg pname: Specifies the symbolic name of a texture environment parameter. + :type params: :class:`Buffer` object. Depends on function prototype. + :arg params: Returns the requested data. + + +.. function:: glGetTexGen (coord, pname, params): + + B{glGetTexGendv, glGetTexGenfv, glGetTexGeniv} + + Return texture coordinate generation parameters + + .. seealso:: `OpenGL Docs `_ + + :type coord: Enumerated constant + :arg coord: Specifies a texture coordinate. + :type pname: Enumerated constant + :arg pname: Specifies the symbolic name of the value(s) to be returned. + :type params: :class:`Buffer` object. Depends on function prototype. + :arg params: Returns the requested data. + + +.. function:: glGetTexImage(target, level, format, type, pixels): + + Return a texture image + + .. seealso:: `OpenGL Docs `_ + + :type target: Enumerated constant + :arg target: Specifies which texture is to be obtained. + :type level: int + :arg level: Specifies the level-of-detail number of the desired image. + Level 0 is the base image level. Level n is the nth mipmap reduction image. + :type format: Enumerated constant + :arg format: Specifies a pixel format for the returned data. + :type type: Enumerated constant + :arg type: Specifies a pixel type for the returned data. + :type pixels: :class:`Buffer` object. + :arg pixels: Returns the texture image. Should be a pointer to an array of the + type specified by type + + +.. function:: glGetTexLevelParameter (target, level, pname, params): + + B{glGetTexLevelParameterfv, glGetTexLevelParameteriv} + + return texture parameter values for a specific level of detail + + .. seealso:: U{opengl.org/developers/documentation/man_pages/hardcopy/GL/html/gl/gettexlevelparameter.html>`_ + + :type target: Enumerated constant + :arg target: Specifies the symbolic name of the target texture. + :type level: int + :arg level: Specifies the level-of-detail number of the desired image. + Level 0 is the base image level. Level n is the nth mipmap reduction image. + :type pname: Enumerated constant + :arg pname: Specifies the symbolic name of a texture parameter. + :type params: :class:`Buffer` object. Depends on function prototype. + :arg params: Returns the requested data. + + +.. function:: glGetTexParameter (target, pname, params): + + B{glGetTexParameterfv, glGetTexParameteriv} + + Return texture parameter values + + .. seealso:: `OpenGL Docs `_ + + :type target: Enumerated constant + :arg target: Specifies the symbolic name of the target texture. + :type pname: Enumerated constant + :arg pname: Specifies the symbolic name the target texture. + :type params: :class:`Buffer` object. Depends on function prototype. + :arg params: Returns the texture parameters. + + +.. function:: glHint(target, mode): + + Specify implementation-specific hints + + .. seealso:: `OpenGL Docs `_ + + :type target: Enumerated constant + :arg target: Specifies a symbolic constant indicating the behavior to be + controlled. + :type mode: Enumerated constant + :arg mode: Specifies a symbolic constant indicating the desired behavior. + + +.. function:: glIndex(c): + + B{glIndexd, glIndexf, glIndexi, glIndexs, glIndexdv, glIndexfv, glIndexiv, glIndexsv} + + Set the current color index + + .. seealso:: `OpenGL Docs `_ + + :type c: :class:`Buffer` object. Depends on function prototype. + :arg c: Specifies a pointer to a one element array that contains the new value for + the current color index. + + +.. function:: glInitNames(): + + Initialize the name stack + + .. seealso:: `OpenGL Docs `_ + + +.. function:: glIsEnabled(cap): + + Test whether a capability is enabled + + .. seealso:: `OpenGL Docs `_ + + :type cap: Enumerated constant + :arg cap: Specifies a constant representing a GL capability. + + +.. function:: glIsList(list): + + Determine if a name corresponds to a display-list + + .. seealso:: `OpenGL Docs `_ + + :type list: unsigned int + :arg list: Specifies a potential display-list name. + + +.. function:: glIsTexture(texture): + + Determine if a name corresponds to a texture + + .. seealso:: `OpenGL Docs `_ + + :type texture: unsigned int + :arg texture: Specifies a value that may be the name of a texture. + + +.. function:: glLight (light, pname, param): + + B{glLightf,glLighti, glLightfv, glLightiv} + + Set the light source parameters + + .. seealso:: `OpenGL Docs `_ + + :type light: Enumerated constant + :arg light: Specifies a light. The number of lights depends on the implementation, + but at least eight lights are supported. They are identified by symbolic names of the + form GL_LIGHTi where 0 < i < GL_MAX_LIGHTS. + :type pname: Enumerated constant + :arg pname: Specifies a single-valued light source parameter for light. + :type param: Depends on function prototype. + :arg param: Specifies the value that parameter pname of light source light will be set to. + If function prototype ends in 'v' specifies a pointer to the value or values that + parameter pname of light source light will be set to. + + +.. function:: glLightModel (pname, param): + + B{glLightModelf, glLightModeli, glLightModelfv, glLightModeliv} + + Set the lighting model parameters + + .. seealso:: `OpenGL Docs `_ + + :type pname: Enumerated constant + :arg pname: Specifies a single-value light model parameter. + :type param: Depends on function prototype. + :arg param: Specifies the value that param will be set to. If function prototype ends in 'v' + specifies a pointer to the value or values that param will be set to. + + +.. function:: glLineStipple(factor, pattern): + + Specify the line stipple pattern + + .. seealso:: `OpenGL Docs `_ + + :type factor: int + :arg factor: Specifies a multiplier for each bit in the line stipple pattern. + If factor is 3, for example, each bit in the pattern is used three times before + the next bit in the pattern is used. factor is clamped to the range [1, 256] and + defaults to 1. + :type pattern: unsigned short int + :arg pattern: Specifies a 16-bit integer whose bit pattern determines which fragments + of a line will be drawn when the line is rasterized. Bit zero is used first; the default + pattern is all 1's. + + +.. function:: glLineWidth(width): + + Specify the width of rasterized lines. + + .. seealso:: `OpenGL Docs `_ + + :type width: float + :arg width: Specifies the width of rasterized lines. The initial value is 1. + + +.. function:: glListBase(base): + + Set the display-list base for glCallLists + + .. seealso:: `OpenGL Docs `_ + + :type base: unsigned int + :arg base: Specifies an integer offset that will be added to glCallLists + offsets to generate display-list names. The initial value is 0. + + +.. function:: glLoadIdentity(): + + Replace the current matrix with the identity matrix + + .. seealso:: `OpenGL Docs `_ + + +.. function:: glLoadMatrix (m): + + B{glLoadMatrixd, glLoadMatixf} + + Replace the current matrix with the specified matrix + + .. seealso:: `OpenGL Docs `_ + + :type m: :class:`Buffer` object. Depends on function prototype. + :arg m: Specifies a pointer to 16 consecutive values, which are used as the elements + of a 4x4 column-major matrix. + + +.. function:: glLoadName(name): + + Load a name onto the name stack. + + .. seealso:: `OpenGL Docs `_ + + :type name: unsigned int + :arg name: Specifies a name that will replace the top value on the name stack. + + +.. function:: glLogicOp(opcode): + + Specify a logical pixel operation for color index rendering + + .. seealso:: `OpenGL Docs `_ + + :type opcode: Enumerated constant + :arg opcode: Specifies a symbolic constant that selects a logical operation. + + +.. function:: glMap1 (target, u1, u2, stride, order, points): + + B{glMap1d, glMap1f} + + Define a one-dimensional evaluator + + .. seealso:: `OpenGL Docs `_ + + :type target: Enumerated constant + :arg target: Specifies the kind of values that are generated by the evaluator. + :type u1, u2: Depends on function prototype. + :arg u1,u2: Specify a linear mapping of u, as presented to glEvalCoord1, to ^, t + he variable that is evaluated by the equations specified by this command. + :type stride: int + :arg stride: Specifies the number of floats or float (double)s between the beginning + of one control point and the beginning of the next one in the data structure + referenced in points. This allows control points to be embedded in arbitrary data + structures. The only constraint is that the values for a particular control point must + occupy contiguous memory locations. + :type order: int + :arg order: Specifies the number of control points. Must be positive. + :type points: :class:`Buffer` object. Depends on function prototype. + :arg points: Specifies a pointer to the array of control points. + + +.. function:: glMap2 (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points): + + B{glMap2d, glMap2f} + + Define a two-dimensional evaluator + + .. seealso:: `OpenGL Docs `_ + + :type target: Enumerated constant + :arg target: Specifies the kind of values that are generated by the evaluator. + :type u1, u2: Depends on function prototype. + :arg u1,u2: Specify a linear mapping of u, as presented to glEvalCoord2, to ^, t + he variable that is evaluated by the equations specified by this command. Initially + u1 is 0 and u2 is 1. + :type ustride: int + :arg ustride: Specifies the number of floats or float (double)s between the beginning + of control point R and the beginning of control point R ij, where i and j are the u + and v control point indices, respectively. This allows control points to be embedded + in arbitrary data structures. The only constraint is that the values for a particular + control point must occupy contiguous memory locations. The initial value of ustride is 0. + :type uorder: int + :arg uorder: Specifies the dimension of the control point array in the u axis. + Must be positive. The initial value is 1. + :type v1, v2: Depends on function prototype. + :arg v1, v2: Specify a linear mapping of v, as presented to glEvalCoord2, + to ^, one of the two variables that are evaluated by the equations + specified by this command. Initially, v1 is 0 and v2 is 1. + :type vstride: int + :arg vstride: Specifies the number of floats or float (double)s between the + beginning of control point R and the beginning of control point R ij, + where i and j are the u and v control point(indices, respectively. + This allows control points to be embedded in arbitrary data structures. + The only constraint is that the values for a particular control point must + occupy contiguous memory locations. The initial value of vstride is 0. + :type vorder: int + :arg vorder: Specifies the dimension of the control point array in the v axis. + Must be positive. The initial value is 1. + :type points: :class:`Buffer` object. Depends on function prototype. + :arg points: Specifies a pointer to the array of control points. + + +.. function:: glMapGrid (un, u1,u2 ,vn, v1, v2): + + B{glMapGrid1d, glMapGrid1f, glMapGrid2d, glMapGrid2f} + + Define a one- or two-dimensional mesh + + .. seealso:: `OpenGL Docs `_ + + :type un: int + :arg un: Specifies the number of partitions in the grid range interval + [u1, u2]. Must be positive. + :type u1, u2: Depends on function prototype. + :arg u1, u2: Specify the mappings for integer grid domain values i=0 and i=un. + :type vn: int + :arg vn: Specifies the number of partitions in the grid range interval + [v1, v2] (glMapGrid2 only). + :type v1, v2: Depends on function prototype. + :arg v1, v2: Specify the mappings for integer grid domain values j=0 and j=vn + (glMapGrid2 only). + + +.. function:: glMaterial (face, pname, params): + + Specify material parameters for the lighting model. + + .. seealso:: `OpenGL Docs `_ + + :type face: Enumerated constant + :arg face: Specifies which face or faces are being updated. Must be one of: + :type pname: Enumerated constant + :arg pname: Specifies the single-valued material parameter of the face + or faces that is being updated. Must be GL_SHININESS. + :type params: int + :arg params: Specifies the value that parameter GL_SHININESS will be set to. + If function prototype ends in 'v' specifies a pointer to the value or values that + pname will be set to. + + +.. function:: glMatrixMode(mode): + + Specify which matrix is the current matrix. + + .. seealso:: `OpenGL Docs `_ + + :type mode: Enumerated constant + :arg mode: Specifies which matrix stack is the target for subsequent matrix operations. + + +.. function:: glMultMatrix (m): + + B{glMultMatrixd, glMultMatrixf} + + Multiply the current matrix with the specified matrix + + .. seealso:: `OpenGL Docs `_ + + :type m: :class:`Buffer` object. Depends on function prototype. + :arg m: Points to 16 consecutive values that are used as the elements of a 4x4 column + major matrix. + + +.. function:: glNewList(list, mode): + + Create or replace a display list + + .. seealso:: `OpenGL Docs `_ + + :type list: unsigned int + :arg list: Specifies the display list name + :type mode: Enumerated constant + :arg mode: Specifies the compilation mode. + + +.. function:: glNormal3 (nx, ny, nz, v): + + B{Normal3b, Normal3bv, Normal3d, Normal3dv, Normal3f, Normal3fv, Normal3i, Normal3iv, + Normal3s, Normal3sv} + + Set the current normal vector + + .. seealso:: `OpenGL Docs `_ + + :type nx, ny, nz: Depends on function prototype. (non - 'v' prototypes only) + :arg nx, ny, nz: Specify the x, y, and z coordinates of the new current normal. + The initial value of the current normal is the unit vector, (0, 0, 1). + :type v: :class:`Buffer` object. Depends on function prototype. ('v' prototypes) + :arg v: Specifies a pointer to an array of three elements: the x, y, and z coordinates + of the new current normal. + + +.. function:: glOrtho(left, right, bottom, top, zNear, zFar): + + Multiply the current matrix with an orthographic matrix + + .. seealso:: `OpenGL Docs `_ + + :type left, right: double (float) + :arg left, right: Specify the coordinates for the left and + right vertical clipping planes. + :type bottom, top: double (float) + :arg bottom, top: Specify the coordinates for the bottom and top + horizontal clipping planes. + :type zNear, zFar: double (float) + :arg zNear, zFar: Specify the distances to the nearer and farther + depth clipping planes. These values are negative if the plane is to be behind the viewer. + + +.. function:: glPassThrough(token): + + Place a marker in the feedback buffer + + .. seealso:: `OpenGL Docs `_ + + :type token: float + :arg token: Specifies a marker value to be placed in the feedback + buffer following a GL_PASS_THROUGH_TOKEN. + + +.. function:: glPixelMap (map, mapsize, values): + + B{glPixelMapfv, glPixelMapuiv, glPixelMapusv} + + Set up pixel transfer maps + + .. seealso:: `OpenGL Docs `_ + + :type map: Enumerated constant + :arg map: Specifies a symbolic map name. + :type mapsize: int + :arg mapsize: Specifies the size of the map being defined. + :type values: :class:`Buffer` object. Depends on function prototype. + :arg values: Specifies an array of mapsize values. + + +.. function:: glPixelStore (pname, param): + + B{glPixelStoref, glPixelStorei} + + Set pixel storage modes + + .. seealso:: `OpenGL Docs `_ + + :type pname: Enumerated constant + :arg pname: Specifies the symbolic name of the parameter to be set. + Six values affect the packing of pixel data into memory. + Six more affect the unpacking of pixel data from memory. + :type param: Depends on function prototype. + :arg param: Specifies the value that pname is set to. + + +.. function:: glPixelTransfer (pname, param): + + B{glPixelTransferf, glPixelTransferi} + + Set pixel transfer modes + + .. seealso:: `OpenGL Docs `_ + + :type pname: Enumerated constant + :arg pname: Specifies the symbolic name of the pixel transfer parameter to be set. + :type param: Depends on function prototype. + :arg param: Specifies the value that pname is set to. + + +.. function:: glPixelZoom(xfactor, yfactor): + + Specify the pixel zoom factors + + .. seealso:: `OpenGL Docs `_ + + :type xfactor, yfactor: float + :arg xfactor, yfactor: Specify the x and y zoom factors for pixel write operations. + + +.. function:: glPointSize(size): + + Specify the diameter of rasterized points + + .. seealso:: `OpenGL Docs `_ + + :type size: float + :arg size: Specifies the diameter of rasterized points. The initial value is 1. + + +.. function:: glPolygonMode(face, mode): + + Select a polygon rasterization mode + + .. seealso:: `OpenGL Docs `_ + + :type face: Enumerated constant + :arg face: Specifies the polygons that mode applies to. + Must be GL_FRONT for front-facing polygons, GL_BACK for back- facing + polygons, or GL_FRONT_AND_BACK for front- and back-facing polygons. + :type mode: Enumerated constant + :arg mode: Specifies how polygons will be rasterized. + The initial value is GL_FILL for both front- and back- facing polygons. + + +.. function:: glPolygonOffset(factor, units): + + Set the scale and units used to calculate depth values + + .. seealso:: `OpenGL Docs `_ + + :type factor: float + :arg factor: Specifies a scale factor that is used to create a variable depth + offset for each polygon. The initial value is 0. + :type units: float + :arg units: Is multiplied by an implementation-specific value to create a + constant depth offset. The initial value is 0. + + +.. function:: glPolygonStipple(mask): + + Set the polygon stippling pattern + + .. seealso:: `OpenGL Docs `_ + + :type mask: :class:`Buffer` object I{type GL_BYTE} + :arg mask: Specifies a pointer to a 32x32 stipple pattern that will be unpacked + from memory in the same way that glDrawPixels unpacks pixels. + + +.. function:: glPopAttrib(): + + Pop the server attribute stack + + .. seealso:: `OpenGL Docs `_ + + +.. function:: glPopClientAttrib(): + + Pop the client attribute stack + + .. seealso:: `OpenGL Docs `_ + + +.. function:: glPopMatrix(): + + Pop the current matrix stack + + .. seealso:: `OpenGL Docs `_ + + +.. function:: glPopName(): + + Pop the name stack + + .. seealso:: `OpenGL Docs `_ + + +.. function:: glPrioritizeTextures(n, textures, priorities): + + Set texture residence priority + + .. seealso:: `OpenGL Docs `_ + + :type n: int + :arg n: Specifies the number of textures to be prioritized. + :type textures: :class:`Buffer` I{type GL_INT} + :arg textures: Specifies an array containing the names of the textures to be prioritized. + :type priorities: :class:`Buffer` I{type GL_FLOAT} + :arg priorities: Specifies an array containing the texture priorities. + A priority given in an element of priorities applies to the texture named + by the corresponding element of textures. + + +.. function:: glPushAttrib(mask): + + Push the server attribute stack + + .. seealso:: `OpenGL Docs `_ + + :type mask: Enumerated constant(s) + :arg mask: Specifies a mask that indicates which attributes to save. + + +.. function:: glPushClientAttrib(mask): + + Push the client attribute stack + + .. seealso:: `OpenGL Docs `_ + + :type mask: Enumerated constant(s) + :arg mask: Specifies a mask that indicates which attributes to save. + + +.. function:: glPushMatrix(): + + Push the current matrix stack + + .. seealso:: `OpenGL Docs `_ + + +.. function:: glPushName(name): + + Push the name stack + + .. seealso:: `OpenGL Docs `_ + + :type name: unsigned int + :arg name: Specifies a name that will be pushed onto the name stack. + + +.. function:: glRasterPos (x,y,z,w): + + B{glRasterPos2d, glRasterPos2f, glRasterPos2i, glRasterPos2s, glRasterPos3d, + glRasterPos3f, glRasterPos3i, glRasterPos3s, glRasterPos4d, glRasterPos4f, + glRasterPos4i, glRasterPos4s, glRasterPos2dv, glRasterPos2fv, glRasterPos2iv, + glRasterPos2sv, glRasterPos3dv, glRasterPos3fv, glRasterPos3iv, glRasterPos3sv, + glRasterPos4dv, glRasterPos4fv, glRasterPos4iv, glRasterPos4sv} + + Specify the raster position for pixel operations + + .. seealso:: `OpenGL Docs `_ + + :type x, y, z, w: Depends on function prototype. (z and w for '3' and '4' prototypes only) + :arg x, y, z, w: Specify the x,y,z, and w object coordinates (if present) for the + raster position. If function prototype ends in 'v' specifies a pointer to an array of two, + three, or four elements, specifying x, y, z, and w coordinates, respectively. + + .. note:: + + If you are drawing to the 3d view with a Scriptlink of a space handler + the zoom level of the panels will scale the glRasterPos by the view matrix. + so a X of 10 will not always offset 10 pixels as you would expect. + + To work around this get the scale value of the view matrix and use it to scale your pixel values. + + .. code-block:: python + + import Blender + from Blender.BGL import * + xval, yval= 100, 40 + # Get the scale of the view matrix + viewMatrix = Buffer(GL_FLOAT, 16) + glGetFloatv(GL_MODELVIEW_MATRIX, viewMatrix) + f = 1/viewMatrix[0] + glRasterPos2f(xval*f, yval*f) # Instead of the usual glRasterPos2i(xval, yval) + + +.. function:: glReadBuffer(mode): + + Select a color buffer source for pixels. + + .. seealso:: `OpenGL Docs `_ + + :type mode: Enumerated constant + :arg mode: Specifies a color buffer. + + +.. function:: glReadPixels(x, y, width, height, format, type, pixels): + + Read a block of pixels from the frame buffer + + .. seealso:: `OpenGL Docs `_ + + :type x, y: int + :arg x, y: Specify the window coordinates of the first pixel that is read + from the frame buffer. This location is the lower left corner of a rectangular + block of pixels. + :type width, height: int + :arg width, height: Specify the dimensions of the pixel rectangle. width and + height of one correspond to a single pixel. + :type format: Enumerated constant + :arg format: Specifies the format of the pixel data. + :type type: Enumerated constant + :arg type: Specifies the data type of the pixel data. + :type pixels: :class:`Buffer` object + :arg pixels: Returns the pixel data. + + +.. function:: glRect (x1,y1,x2,y2,v1,v2): + + B{glRectd, glRectf, glRecti, glRects, glRectdv, glRectfv, glRectiv, glRectsv} + + Draw a rectangle + + .. seealso:: `OpenGL Docs `_ + + :type x1, y1: Depends on function prototype. (for non 'v' prototypes only) + :arg x1, y1: Specify one vertex of a rectangle + :type x2, y2: Depends on function prototype. (for non 'v' prototypes only) + :arg x2, y2: Specify the opposite vertex of the rectangle + :type v1, v2: Depends on function prototype. (for 'v' prototypes only) + :arg v1, v2: Specifies a pointer to one vertex of a rectangle and the pointer + to the opposite vertex of the rectangle + + +.. function:: glRenderMode(mode): + + Set rasterization mode + + .. seealso:: `OpenGL Docs `_ + + :type mode: Enumerated constant + :arg mode: Specifies the rasterization mode. + + +.. function:: glRotate (angle, x, y, z): + + B{glRotated, glRotatef} + + Multiply the current matrix by a rotation matrix + + .. seealso:: `OpenGL Docs `_ + + :type angle: Depends on function prototype. + :arg angle: Specifies the angle of rotation in degrees. + :type x, y, z: Depends on function prototype. + :arg x, y, z: Specify the x, y, and z coordinates of a vector respectively. + + +.. function:: glScale (x,y,z): + + B{glScaled, glScalef} + + Multiply the current matrix by a general scaling matrix + + .. seealso:: `OpenGL Docs `_ + + :type x, y, z: Depends on function prototype. + :arg x, y, z: Specify scale factors along the x, y, and z axes, respectively. + + +.. function:: glScissor(x,y,width,height): + + Define the scissor box + + .. seealso:: `OpenGL Docs `_ + + :type x, y: int + :arg x, y: Specify the lower left corner of the scissor box. Initially (0, 0). + :type width, height: int + :arg width height: Specify the width and height of the scissor box. When a + GL context is first attached to a window, width and height are set to the + dimensions of that window. + + +.. function:: glSelectBuffer(size, buffer): + + Establish a buffer for selection mode values + + .. seealso:: `OpenGL Docs `_ + + :type size: int + :arg size: Specifies the size of buffer + :type buffer: :class:`Buffer` I{type GL_INT} + :arg buffer: Returns the selection data + + +.. function:: glShadeModel(mode): + + Select flat or smooth shading + + .. seealso:: `OpenGL Docs `_ + + :type mode: Enumerated constant + :arg mode: Specifies a symbolic value representing a shading technique. + + +.. function:: glStencilFuc(func, ref, mask): + + Set function and reference value for stencil testing + + .. seealso:: `OpenGL Docs `_ + + :type func: Enumerated constant + :arg func: Specifies the test function. + :type ref: int + :arg ref: Specifies the reference value for the stencil test. ref is clamped + to the range [0,2n-1], where n is the number of bitplanes in the stencil + buffer. The initial value is 0. + :type mask: unsigned int + :arg mask: Specifies a mask that is ANDed with both the reference value and + the stored stencil value when the test is done. The initial value is all 1's. + + +.. function:: glStencilMask(mask): + + Control the writing of individual bits in the stencil planes + + .. seealso:: `OpenGL Docs `_ + + :type mask: unsigned int + :arg mask: Specifies a bit mask to enable and disable writing of individual bits + in the stencil planes. Initially, the mask is all 1's. + + +.. function:: glStencilOp(fail, zfail, zpass): + + Set stencil test actions + + .. seealso:: `OpenGL Docs `_ + + :type fail: Enumerated constant + :arg fail: Specifies the action to take when the stencil test fails. + The initial value is GL_KEEP. + :type zfail: Enumerated constant + :arg zfail: Specifies the stencil action when the stencil test passes, but the + depth test fails. zfail accepts the same symbolic constants as fail. + The initial value is GL_KEEP. + :type zpass: Enumerated constant + :arg zpass: Specifies the stencil action when both the stencil test and the + depth test pass, or when the stencil test passes and either there is no + depth buffer or depth testing is not enabled. zpass accepts the same + symbolic constants + as fail. The initial value is GL_KEEP. + + +.. function:: glTexCoord (s,t,r,q,v): + + B{glTexCoord1d, glTexCoord1f, glTexCoord1i, glTexCoord1s, glTexCoord2d, glTexCoord2f, + glTexCoord2i, glTexCoord2s, glTexCoord3d, glTexCoord3f, glTexCoord3i, glTexCoord3s, + glTexCoord4d, glTexCoord4f, glTexCoord4i, glTexCoord4s, glTexCoord1dv, glTexCoord1fv, + glTexCoord1iv, glTexCoord1sv, glTexCoord2dv, glTexCoord2fv, glTexCoord2iv, + glTexCoord2sv, glTexCoord3dv, glTexCoord3fv, glTexCoord3iv, glTexCoord3sv, + glTexCoord4dv, glTexCoord4fv, glTexCoord4iv, glTexCoord4sv} + + Set the current texture coordinates + + .. seealso:: `OpenGL Docs `_ + + :type s, t, r, q: Depends on function prototype. (r and q for '3' and '4' prototypes only) + :arg s, t, r, q: Specify s, t, r, and q texture coordinates. Not all parameters are + present in all forms of the command. + :type v: :class:`Buffer` object. Depends on function prototype. (for 'v' prototypes only) + :arg v: Specifies a pointer to an array of one, two, three, or four elements, + which in turn specify the s, t, r, and q texture coordinates. + + +.. function:: glTexEnv (target, pname, param): + + B{glTextEnvf, glTextEnvi, glTextEnvfv, glTextEnviv} + + Set texture environment parameters + + .. seealso:: `OpenGL Docs `_ + + :type target: Enumerated constant + :arg target: Specifies a texture environment. Must be GL_TEXTURE_ENV. + :type pname: Enumerated constant + :arg pname: Specifies the symbolic name of a single-valued texture environment + parameter. Must be GL_TEXTURE_ENV_MODE. + :type param: Depends on function prototype. + :arg param: Specifies a single symbolic constant. If function prototype ends in 'v' + specifies a pointer to a parameter array that contains either a single + symbolic constant or an RGBA color + + +.. function:: glTexGen (coord, pname, param): + + B{glTexGend, glTexGenf, glTexGeni, glTexGendv, glTexGenfv, glTexGeniv} + + Control the generation of texture coordinates + + .. seealso:: `OpenGL Docs `_ + + :type coord: Enumerated constant + :arg coord: Specifies a texture coordinate. + :type pname: Enumerated constant + :arg pname: Specifies the symbolic name of the texture- coordinate generation function. + :type param: Depends on function prototype. + :arg param: Specifies a single-valued texture generation parameter. + If function prototype ends in 'v' specifies a pointer to an array of texture + generation parameters. If pname is GL_TEXTURE_GEN_MODE, then the array must + contain a single symbolic constant. Otherwise, params holds the coefficients + for the texture-coordinate generation function specified by pname. + + +.. function:: glTexImage1D(target, level, internalformat, width, border, format, type, pixels): + + Specify a one-dimensional texture image + + .. seealso:: `OpenGL Docs `_ + + :type target: Enumerated constant + :arg target: Specifies the target texture. + :type level: int + :arg level: Specifies the level-of-detail number. Level 0 is the base image level. + Level n is the nth mipmap reduction image. + :type internalformat: int + :arg internalformat: Specifies the number of color components in the texture. + :type width: int + :arg width: Specifies the width of the texture image. Must be 2n+2(border) + for some integer n. All implementations support texture images that are + at least 64 texels wide. The height of the 1D texture image is 1. + :type border: int + :arg border: Specifies the width of the border. Must be either 0 or 1. + :type format: Enumerated constant + :arg format: Specifies the format of the pixel data. + :type type: Enumerated constant + :arg type: Specifies the data type of the pixel data. + :type pixels: :class:`Buffer` object. + :arg pixels: Specifies a pointer to the image data in memory. + + +.. function:: glTexImage2D(target, level, internalformat, width, height, border, format, type, pixels): + + Specify a two-dimensional texture image + + .. seealso:: `OpenGL Docs `_ + + :type target: Enumerated constant + :arg target: Specifies the target texture. + :type level: int + :arg level: Specifies the level-of-detail number. Level 0 is the base image level. + Level n is the nth mipmap reduction image. + :type internalformat: int + :arg internalformat: Specifies the number of color components in the texture. + :type width: int + :arg width: Specifies the width of the texture image. Must be 2n+2(border) + for some integer n. All implementations support texture images that are at + least 64 texels wide. + :type height: int + :arg height: Specifies the height of the texture image. Must be 2m+2(border) for + some integer m. All implementations support texture images that are at + least 64 texels high. + :type border: int + :arg border: Specifies the width of the border. Must be either 0 or 1. + :type format: Enumerated constant + :arg format: Specifies the format of the pixel data. + :type type: Enumerated constant + :arg type: Specifies the data type of the pixel data. + :type pixels: :class:`Buffer` object. + :arg pixels: Specifies a pointer to the image data in memory. + + +.. function:: glTexParameter (target, pname, param): + + B{glTexParameterf, glTexParameteri, glTexParameterfv, glTexParameteriv} + + Set texture parameters + + .. seealso:: `OpenGL Docs `_ + + :type target: Enumerated constant + :arg target: Specifies the target texture. + :type pname: Enumerated constant + :arg pname: Specifies the symbolic name of a single-valued texture parameter. + :type param: Depends on function prototype. + :arg param: Specifies the value of pname. If function prototype ends in 'v' specifies + a pointer to an array where the value or values of pname are stored. + + +.. function:: glTranslate (x, y, z): + + B{glTranslatef, glTranslated} + + Multiply the current matrix by a translation matrix + + .. seealso:: `OpenGL Docs `_ + + :type x, y, z: Depends on function prototype. + :arg x, y, z: Specify the x, y, and z coordinates of a translation vector. + + +.. function:: glVertex (x,y,z,w,v): + + B{glVertex2d, glVertex2f, glVertex2i, glVertex2s, glVertex3d, glVertex3f, glVertex3i, + glVertex3s, glVertex4d, glVertex4f, glVertex4i, glVertex4s, glVertex2dv, glVertex2fv, + glVertex2iv, glVertex2sv, glVertex3dv, glVertex3fv, glVertex3iv, glVertex3sv, glVertex4dv, + glVertex4fv, glVertex4iv, glVertex4sv} + + Specify a vertex + + .. seealso:: `OpenGL Docs `_ + + :type x, y, z, w: Depends on function prototype (z and w for '3' and '4' prototypes only) + :arg x, y, z, w: Specify x, y, z, and w coordinates of a vertex. Not all parameters + are present in all forms of the command. + :type v: :class:`Buffer` object. Depends of function prototype (for 'v' + prototypes only) + :arg v: Specifies a pointer to an array of two, three, or four elements. The + elements of a two-element array are x and y; of a three-element array, + x, y, and z; and of a four-element array, x, y, z, and w. + + +.. function:: glViewport(x,y,width,height): + + Set the viewport + + .. seealso:: `OpenGL Docs `_ + + :type x, y: int + :arg x, y: Specify the lower left corner of the viewport rectangle, + in pixels. The initial value is (0,0). + :type width, height: int + :arg width, height: Specify the width and height of the viewport. When a GL + context is first attached to a window, width and height are set to the + dimensions of that window. + + +.. function:: gluPerspective(fovY, aspect, zNear, zFar): + + Set up a perspective projection matrix. + + .. seealso:: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5577288} + + :type fovY: double + :arg fovY: Specifies the field of view angle, in degrees, in the y direction. + :type aspect: double + :arg aspect: Specifies the aspect ratio that determines the field of view in the x direction. + The aspect ratio is the ratio of x (width) to y (height). + :type zNear: double + :arg zNear: Specifies the distance from the viewer to the near clipping plane (always positive). + :type zFar: double + :arg zFar: Specifies the distance from the viewer to the far clipping plane (always positive). + + +.. function:: gluLookAt(eyex, eyey, eyez, centerx, centery, centerz, upx, upy, upz): + + Define a viewing transformation. + + .. seealso:: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5573042} + + :type eyex, eyey, eyez: double + :arg eyex, eyey, eyez: Specifies the position of the eye point. + :type centerx, centery, centerz: double + :arg centerx, centery, centerz: Specifies the position of the reference point. + :type upx, upy, upz: double + :arg upx, upy, upz: Specifies the direction of the up vector. + + +.. function:: gluOrtho2D(left, right, bottom, top): + + Define a 2-D orthographic projection matrix. + + .. seealso:: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5578074} + + :type left, right: double + :arg left, right: Specify the coordinates for the left and right vertical clipping planes. + :type bottom, top: double + :arg bottom, top: Specify the coordinates for the bottom and top horizontal clipping planes. + + +.. function:: gluPickMatrix(x, y, width, height, viewport): + + Define a picking region. + + .. seealso:: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5578074} + + :type x, y: double + :arg x, y: Specify the center of a picking region in window coordinates. + :type width, height: double + :arg width, height: Specify the width and height, respectively, of the picking region in window coordinates. + :type viewport: :class:`Buffer` object. [int] + :arg viewport: Specifies the current viewport. + + +.. function:: gluProject(objx, objy, objz, modelMatrix, projMatrix, viewport, winx, winy, winz): + + Map object coordinates to window coordinates. + + .. seealso:: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5578074} + + :type objx, objy, objz: double + :arg objx, objy, objz: Specify the object coordinates. + :type modelMatrix: :class:`Buffer` object. [double] + :arg modelMatrix: Specifies the current modelview matrix (as from a glGetDoublev call). + :type projMatrix: :class:`Buffer` object. [double] + :arg projMatrix: Specifies the current projection matrix (as from a glGetDoublev call). + :type viewport: :class:`Buffer` object. [int] + :arg viewport: Specifies the current viewport (as from a glGetIntegerv call). + :type winx, winy, winz: :class:`Buffer` object. [double] + :arg winx, winy, winz: Return the computed window coordinates. + + +.. function:: gluUnProject(winx, winy, winz, modelMatrix, projMatrix, viewport, objx, objy, objz): + + Map object coordinates to window coordinates. + + .. seealso:: U{http://biology.ncsa.uiuc.edu/cgi-bin/infosrch.cgi?cmd=getdoc&coll=0650&db=bks&fname=/SGI_Developer/OpenGL_RM/ch06.html#id5582204} + + :type winx, winy, winz: double + :arg winx, winy, winz: Specify the window coordinates to be mapped. + :type modelMatrix: :class:`Buffer` object. [double] + :arg modelMatrix: Specifies the current modelview matrix (as from a glGetDoublev call). + :type projMatrix: :class:`Buffer` object. [double] + :arg projMatrix: Specifies the current projection matrix (as from a glGetDoublev call). + :type viewport: :class:`Buffer` object. [int] + :arg viewport: Specifies the current viewport (as from a glGetIntegerv call). + :type objx, objy, objz: :class:`Buffer` object. [double] + :arg objx, objy, objz: Return the computed object coordinates. + class Buffer: - """ - The Buffer object is simply a block of memory that is delineated and initialized by the - user. Many OpenGL functions return data to a C-style pointer, however, because this - is not possible in python the Buffer object can be used to this end. Wherever pointer - notation is used in the OpenGL functions the Buffer object can be used in it's BGL - wrapper. In some instances the Buffer object will need to be initialized with the template - parameter, while in other instances the user will want to create just a blank buffer - which will be zeroed by default. - Example with Buffer:: - import Blender - from Blender import BGL - myByteBuffer = BGL.Buffer(BGL.GL_BYTE, [32,32]) - BGL.glGetPolygonStipple(myByteBuffer) - print myByteBuffer.dimensions - print myByteBuffer.list - sliceBuffer = myByteBuffer[0:16] - print sliceBuffer + The Buffer object is simply a block of memory that is delineated and initialized by the + user. Many OpenGL functions return data to a C-style pointer, however, because this + is not possible in python the Buffer object can be used to this end. Wherever pointer + notation is used in the OpenGL functions the Buffer object can be used in it's BGL + wrapper. In some instances the Buffer object will need to be initialized with the template + parameter, while in other instances the user will want to create just a blank buffer + which will be zeroed by default. - @ivar list: The contents of the Buffer. - @ivar dimensions: The size of the Buffer. - """ + Example with Buffer:: + import Blender + from Blender import BGL + myByteBuffer = BGL.Buffer(BGL.GL_BYTE, [32,32]) + BGL.glGetPolygonStipple(myByteBuffer) + print myByteBuffer.dimensions + print myByteBuffer.list + sliceBuffer = myByteBuffer[0:16] + print sliceBuffer - def __init__(type, dimensions, template = None): - """ - This will create a new Buffer object for use with other BGL OpenGL commands. - Only the type of argument to store in the buffer and the dimensions of the buffer - are necessary. Buffers are zeroed by default unless a template is supplied, in - which case the buffer is initialized to the template. + .. attribute:: list + + The contents of the Buffer. + + .. attribute:: dimensions + + The size of the Buffer. + + .. method:: __init__(type, dimensions, template = None): + + This will create a new Buffer object for use with other BGL OpenGL commands. + Only the type of argument to store in the buffer and the dimensions of the buffer + are necessary. Buffers are zeroed by default unless a template is supplied, in + which case the buffer is initialized to the template. + + :type type: int + :arg type: The format to store data in. The type should be one of + GL_BYTE, GL_SHORT, GL_INT, or GL_FLOAT. + :type dimensions: An int or sequence object specifying the dimensions of the buffer. + :arg dimensions: If the dimensions are specified as an int a linear array will + be created for the buffer. If a sequence is passed for the dimensions, the buffer + becomes n-Dimensional, where n is equal to the number of parameters passed in the + sequence. Example: [256,2] is a two- dimensional buffer while [256,256,4] creates + a three- dimensional buffer. You can think of each additional dimension as a sub-item + of the dimension to the left. i.e. [10,2] is a 10 element array each with 2 sub-items. + [(0,0), (0,1), (1,0), (1,1), (2,0), ...] etc. + :type template: A python sequence object (optional) + :arg template: A sequence of matching dimensions which will be used to initialize + the Buffer. If a template is not passed in all fields will be initialized to 0. + :rtype: Buffer object + :return: The newly created buffer as a PyObject. - @type type: int - @param type: The format to store data in. The type should be one of - GL_BYTE, GL_SHORT, GL_INT, or GL_FLOAT. - @type dimensions: An int or sequence object specifying the dimensions of the buffer. - @param dimensions: If the dimensions are specified as an int a linear array will - be created for the buffer. If a sequence is passed for the dimensions, the buffer - becomes n-Dimensional, where n is equal to the number of parameters passed in the - sequence. Example: [256,2] is a two- dimensional buffer while [256,256,4] creates - a three- dimensional buffer. You can think of each additional dimension as a sub-item - of the dimension to the left. i.e. [10,2] is a 10 element array each with 2 sub-items. - [(0,0), (0,1), (1,0), (1,1), (2,0), ...] etc. - @type template: A python sequence object (optional) - @param template: A sequence of matching dimensions which will be used to initialize - the Buffer. If a template is not passed in all fields will be initialized to 0. - @rtype: Buffer object - @return: The newly created buffer as a PyObject. - """ diff --git a/doc/python_api/sphinx_doc_gen.py b/doc/python_api/sphinx_doc_gen.py index 0112007ca7f..94578c6a545 100644 --- a/doc/python_api/sphinx_doc_gen.py +++ b/doc/python_api/sphinx_doc_gen.py @@ -67,7 +67,7 @@ if 1: else: # for testing so doc-builds dont take so long. EXCLUDE_MODULES = ( - # "bpy.context", + "bpy.context", "bpy.app", "bpy.path", "bpy.data", @@ -76,10 +76,10 @@ else: "bpy.context", "bpy.types", # supports filtering "bpy.ops", # supports filtering - #"bpy_extras", + "bpy_extras", "bge", "aud", - "bgl", + #"bgl", "blf", "mathutils", "mathutils.geometry", @@ -1028,8 +1028,8 @@ def rna2sphinx(BASEPATH): fw(" mathutils.rst\n\n") if "mathutils.geometry" not in EXCLUDE_MODULES: fw(" mathutils.geometry.rst\n\n") - # XXX TODO - #fw(" bgl.rst\n\n") + if "bgl" not in EXCLUDE_MODULES: + fw(" bgl.rst\n\n") if "blf" not in EXCLUDE_MODULES: fw(" blf.rst\n\n") if "aud" not in EXCLUDE_MODULES: @@ -1159,14 +1159,16 @@ def rna2sphinx(BASEPATH): import mathutils.geometry as module pymodule2sphinx(BASEPATH, "mathutils.geometry", module, "Geometry Utilities") - if "mathutils.geometry" not in EXCLUDE_MODULES: + if "blf" not in EXCLUDE_MODULES: import blf as module pymodule2sphinx(BASEPATH, "blf", module, "Font Drawing") - # XXX TODO - #import bgl as module - #pymodule2sphinx(BASEPATH, "bgl", module, "Blender OpenGl wrapper") - #del module + if "bgl" not in EXCLUDE_MODULES: + #import bgl as module + #pymodule2sphinx(BASEPATH, "bgl", module, "Blender OpenGl wrapper") + #del module + import shutil + shutil.copy2(os.path.join(BASEPATH, "..", "rst", "bgl.rst"), BASEPATH) if "aud" not in EXCLUDE_MODULES: import aud as module From 2c66ab12e93454d1783fc884600eebcba92ad314 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 1 Jul 2011 12:33:34 +0000 Subject: [PATCH 16/22] minor pep8 edits --- build_files/cmake/cmake_consistency_check.py | 3 +-- release/scripts/modules/bpy/__init__.py | 2 +- release/scripts/startup/bl_ui/properties_particle.py | 2 +- release/scripts/startup/bl_ui/space_userpref.py | 5 ++--- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/build_files/cmake/cmake_consistency_check.py b/build_files/cmake/cmake_consistency_check.py index b0fd242db4a..c13da8775b3 100755 --- a/build_files/cmake/cmake_consistency_check.py +++ b/build_files/cmake/cmake_consistency_check.py @@ -26,7 +26,7 @@ from cmake_consistency_check_config import IGNORE, UTF8_CHECK, SOURCE_DIR import os -from os.path import join, dirname, normpath, abspath, splitext +from os.path import join, dirname, normpath, splitext print("Scanning:", SOURCE_DIR) @@ -183,7 +183,6 @@ def is_ignore(f): # First do stupid check, do these files exist? print("\nChecking for missing references:") -import sys is_err = False errs = [] for f in (global_h | global_c): diff --git a/release/scripts/modules/bpy/__init__.py b/release/scripts/modules/bpy/__init__.py index 6dcc5d7b285..9c48dc89f83 100644 --- a/release/scripts/modules/bpy/__init__.py +++ b/release/scripts/modules/bpy/__init__.py @@ -65,4 +65,4 @@ def _main(): _main() -del _main \ No newline at end of file +del _main diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py index 7d4b78396bd..4c92296dacd 100644 --- a/release/scripts/startup/bl_ui/properties_particle.py +++ b/release/scripts/startup/bl_ui/properties_particle.py @@ -878,7 +878,7 @@ class PARTICLE_PT_render(ParticleButtonsPanel, bpy.types.Panel): col.prop(part, "billboard_tilt_random", text="Random", slider=True) col = row.column() col.prop(part, "billboard_offset") - + row = layout.row() col = row.column() col.prop(part, "billboard_size", text="Scale") diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index 9c31b172ee9..c598788006c 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -883,7 +883,7 @@ class USERPREF_PT_addons(bpy.types.Panel): if user_script_path is not None: user_addon_paths.append(os.path.join(user_script_path(), "addons")) user_addon_paths.append(os.path.join(bpy.utils.resource_path('USER'), "scripts", "addons")) - + for path in user_addon_paths: if bpy.path.is_subdir(mod.__file__, path): return True @@ -1001,8 +1001,7 @@ class USERPREF_PT_addons(bpy.types.Panel): for i in range(4 - tot_row): split.separator() - - + # Append missing scripts # First collect scripts that are used but have no script file. From cf05777bc0bc3f2c6b4382a9baf1d035c6f3b8b9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 1 Jul 2011 13:10:49 +0000 Subject: [PATCH 17/22] cmake was installing text as a directory rather then coping the files within it. --- source/creator/CMakeLists.txt | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index 04f1f359ce6..6eddc97104a 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -231,7 +231,17 @@ else() set(TARGETDIR ${EXECUTABLE_OUTPUT_PATH}) endif() -# install target + +# ----------------------------------------------------------------------------- +# Install Targets + +set(BLENDER_TEXT_FILES + ${CMAKE_SOURCE_DIR}/release/text/GPL-license.txt + ${CMAKE_SOURCE_DIR}/release/text/Python-license.txt + ${CMAKE_SOURCE_DIR}/release/text/copyright.txt + ${CMAKE_SOURCE_DIR}/release/text/readme.html +) + if(UNIX AND NOT APPLE) if(WITH_INSTALL_PORTABLE) @@ -274,9 +284,8 @@ if(UNIX AND NOT APPLE) ) install( - DIRECTORY ${CMAKE_SOURCE_DIR}/release/text + FILES ${BLENDER_TEXT_FILES} DESTINATION ${TARGETDIR} - PATTERN ".svn" EXCLUDE ) else() @@ -332,9 +341,8 @@ if(UNIX AND NOT APPLE) DESTINATION ${CMAKE_INSTALL_PREFIX}/share/man/man1 ) install( - DIRECTORY ${CMAKE_SOURCE_DIR}/release/text + FILES ${BLENDER_TEXT_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/doc/blender - PATTERN ".svn" EXCLUDE ) endif() @@ -409,9 +417,8 @@ elseif(WIN32) ) install( # same as linux!, deduplicate - DIRECTORY ${CMAKE_SOURCE_DIR}/release/text + DIRECTORY ${BLENDER_TEXT_FILES} DESTINATION ${TARGETDIR} - PATTERN ".svn" EXCLUDE ) install( # same as linux!, deduplicate @@ -630,9 +637,9 @@ elseif(APPLE) endmacro() # install release and app files - install_dir( - ${CMAKE_SOURCE_DIR}/release/text/ - \${TARGETDIR} + install( + FILES ${BLENDER_TEXT_FILES} + DESTINATION ${TARGETDIR} ) install( @@ -697,6 +704,12 @@ elseif(APPLE) endif() endif() +unset(BLENDER_TEXT_FILES) + + +# ----------------------------------------------------------------------------- +# Setup link libs + add_dependencies(blender makesdna) get_property(BLENDER_LINK_LIBS GLOBAL PROPERTY BLENDER_LINK_LIBS) From 590682bac1b36fe0e7dbfae532aed265f8df5052 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 1 Jul 2011 13:25:00 +0000 Subject: [PATCH 18/22] uv mirror poll function wasnt checking UV's were available on the mesh. --- release/scripts/startup/bl_operators/mesh.py | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/release/scripts/startup/bl_operators/mesh.py b/release/scripts/startup/bl_operators/mesh.py index 996b38ae571..8dca30e54df 100644 --- a/release/scripts/startup/bl_operators/mesh.py +++ b/release/scripts/startup/bl_operators/mesh.py @@ -81,8 +81,8 @@ class MeshMirrorUV(bpy.types.Operator): @classmethod def poll(cls, context): - ob = context.active_object - return (ob and ob.type == 'MESH') + obj = context.active_object + return (obj and obj.type == 'MESH' and obj.data.uv_textures.active) def execute(self, context): DIR = (self.direction == 'NEGATIVE') @@ -120,12 +120,7 @@ class MeshMirrorUV(bpy.types.Operator): if j is not None: vmap[i] = j - active_uv_layer = None - for lay in mesh.uv_textures: - if lay.active: - active_uv_layer = lay.data - break - + active_uv_layer = mesh.uv_textures.active.data fuvs = [(uv.uv1, uv.uv2, uv.uv3, uv.uv4) for uv in active_uv_layer] fuvs_cpy = [(uv[0].copy(), uv[1].copy(), uv[2].copy(), uv[3].copy()) for uv in fuvs] From dcd8933b95592dfeb692614c567c6371297bfc5e Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 1 Jul 2011 13:26:20 +0000 Subject: [PATCH 19/22] quick explode failed if executed with no active object --- release/scripts/startup/bl_operators/object_quick_effects.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/scripts/startup/bl_operators/object_quick_effects.py b/release/scripts/startup/bl_operators/object_quick_effects.py index a8bb3227b3c..074f204d50e 100644 --- a/release/scripts/startup/bl_operators/object_quick_effects.py +++ b/release/scripts/startup/bl_operators/object_quick_effects.py @@ -132,7 +132,7 @@ class QuickExplode(bpy.types.Operator): fake_context = bpy.context.copy() obj_act = context.active_object - if obj_act.type != 'MESH': + if obj_act is None or obj_act.type != 'MESH': self.report({'ERROR'}, "Active object is not a mesh") return {'CANCELLED'} From c2e12d33bde24cbb066d9f223005cb25e19bd9da Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 1 Jul 2011 13:39:35 +0000 Subject: [PATCH 20/22] update checksums for x3d tests --- source/tests/CMakeLists.txt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/source/tests/CMakeLists.txt b/source/tests/CMakeLists.txt index 48053aa9d96..d1696223ec6 100644 --- a/source/tests/CMakeLists.txt +++ b/source/tests/CMakeLists.txt @@ -172,21 +172,21 @@ add_test(import_stl_knot_max_simplified ${TEST_BLENDER_EXE} add_test(import_x3d_cube ${TEST_BLENDER_EXE} --python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py -- --run={'FINISHED'}&bpy.ops.import_scene.x3d\(filepath='${TEST_SRC_DIR}/io_tests/x3d/color_cube.x3d'\) - --md5=2ed64325dd3d62be6ce43c64219376ec --md5_method=SCENE + --md5=3fae9be004199c145941cd3f9f80ad7b --md5_method=SCENE --write-blend=${TEST_OUT_DIR}/import_x3d_cube.blend ) add_test(import_x3d_teapot ${TEST_BLENDER_EXE} --python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py -- --run={'FINISHED'}&bpy.ops.import_scene.x3d\(filepath='${TEST_SRC_DIR}/io_tests/x3d/teapot.x3d'\) - --md5=8b8b386900b8e3d2c036a38c625f4079 --md5_method=SCENE + --md5=8ee196c71947dce4199d55698501691e --md5_method=SCENE --write-blend=${TEST_OUT_DIR}/import_x3d_teapot.blend ) add_test(import_x3d_suzanne_material ${TEST_BLENDER_EXE} --python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py -- --run={'FINISHED'}&bpy.ops.import_scene.x3d\(filepath='${TEST_SRC_DIR}/io_tests/x3d/suzanne_material.x3d'\) - --md5=999129ba835f0ccb98c4bb299f6c2fef --md5_method=SCENE + --md5=3edea1353257d8b5a5f071942f417be6 --md5_method=SCENE --write-blend=${TEST_OUT_DIR}/import_x3d_suzanne_material.blend ) @@ -196,7 +196,7 @@ add_test(export_x3d_cube ${TEST_BLENDER_EXE} --python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py -- --run={'FINISHED'}&bpy.ops.export_scene.x3d\(filepath='${TEST_OUT_DIR}/export_x3d_cube.x3d',use_selection=False\) --md5_source=${TEST_OUT_DIR}/export_x3d_cube.x3d - --md5=30d2b056c004144cd4a0d172484a66f3 --md5_method=FILE + --md5=6ae36be272d6f84c697e84a8b6463273 --md5_method=FILE ) add_test(export_x3d_nurbs ${TEST_BLENDER_EXE} @@ -204,7 +204,7 @@ add_test(export_x3d_nurbs ${TEST_BLENDER_EXE} --python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py -- --run={'FINISHED'}&bpy.ops.export_scene.x3d\(filepath='${TEST_OUT_DIR}/export_x3d_nurbs.x3d',use_selection=False\) --md5_source=${TEST_OUT_DIR}/export_x3d_nurbs.x3d - --md5=7c15afe7b0cf007b842a925508b7d966 --md5_method=FILE + --md5=2d5bcf43cf7b6fbbef1c8cc566968fe5 --md5_method=FILE ) add_test(export_x3d_all_objects ${TEST_BLENDER_EXE} @@ -212,7 +212,7 @@ add_test(export_x3d_all_objects ${TEST_BLENDER_EXE} --python ${CMAKE_CURRENT_LIST_DIR}/bl_test.py -- --run={'FINISHED'}&bpy.ops.export_scene.x3d\(filepath='${TEST_OUT_DIR}/export_x3d_all_objects.x3d',use_selection=False\) --md5_source=${TEST_OUT_DIR}/export_x3d_all_objects.x3d - --md5=d7d6574e833f3f051b65ef4577485fa9 --md5_method=FILE + --md5=bba48ca191e8891adb27c59ed4ce4735 --md5_method=FILE ) From bd81fde1ff647c610c49d469d0d502802ed89fae Mon Sep 17 00:00:00 2001 From: Ton Roosendaal Date: Fri, 1 Jul 2011 14:46:14 +0000 Subject: [PATCH 21/22] Packaging variable named 'a' for release --- source/blender/blenkernel/BKE_blender.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/blender/blenkernel/BKE_blender.h b/source/blender/blenkernel/BKE_blender.h index 7c11f9e964e..25fb6f9f9ff 100644 --- a/source/blender/blenkernel/BKE_blender.h +++ b/source/blender/blenkernel/BKE_blender.h @@ -51,7 +51,7 @@ extern "C" { /* used by packaging tools */ /* can be left blank, otherwise a,b,c... etc with no quotes */ -#define BLENDER_VERSION_CHAR +#define BLENDER_VERSION_CHAR a /* alpha/beta/rc/release, docs use this */ #define BLENDER_VERSION_CYCLE release From 228be107221c0e25c06626b1019802ffee797cdc Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 1 Jul 2011 15:15:22 +0000 Subject: [PATCH 22/22] fix for building headless --- intern/ghost/intern/GHOST_WindowNULL.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/intern/ghost/intern/GHOST_WindowNULL.h b/intern/ghost/intern/GHOST_WindowNULL.h index 0ec3c6f5700..f979313af5c 100644 --- a/intern/ghost/intern/GHOST_WindowNULL.h +++ b/intern/ghost/intern/GHOST_WindowNULL.h @@ -54,7 +54,7 @@ public: const bool stereoVisual, const GHOST_TUns16 numOfAASamples ) : - GHOST_Window(title,left,top,width,height,state,type,stereoVisual,numOfAASamples), + GHOST_Window(width,height,state,type,stereoVisual,numOfAASamples), m_system (system) { setTitle(title);