Příklad v C:
#include <GL/gl.h> #include <GL/glu.h> #define drawOneLine(x1,y1,x2,y2) glBegin(GL_LINES); \ glVertex2f ((x1),(y1)); glVertex2f ((x2),(y2)); glEnd(); void display(void) { int i; glClearColor (0.0, 0.0, 0.0, 0.0); glShadeModel (GL_FLAT); glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0, 1.0, 1.0); glEnable (GL_LINE_STIPPLE); glLineStipple (1, 0x0101); drawOneLine (50.0, 125.0, 150.0, 125.0); glLineStipple (1, 0x00FF); drawOneLine (150.0, 125.0, 250.0, 125.0); glLineStipple (1, 0x1C47); drawOneLine (250.0, 125.0, 350.0, 125.0); glLineWidth (5.0); glLineStipple (1, 0x0101); drawOneLine (50.0, 100.0, 150.0, 100.0); glLineStipple (1, 0x00FF); drawOneLine (150.0, 100.0, 250.0, 100.0); glLineStipple (1, 0x1C47); drawOneLine (250.0, 100.0, 350.0, 100.0); glLineWidth (1.0); glLineStipple (1, 0x1C47); glBegin (GL_LINE_STRIP); for (i = 0; i < 7; i++) glVertex2f (50.0 + ((GLfloat) i * 50.0), 75.0); glEnd (); for (i = 0; i < 6; i++) { drawOneLine (50.0 + ((GLfloat) i * 50.0), 50.0, 50.0 + ((GLfloat)(i+1) * 50.0), 50.0); } glLineStipple (5, 0x1C47); drawOneLine (50.0, 25.0, 350.0, 25.0); glFlush (); }
Příklad v Pythonu:
#!/usr/bin/env python import sys from OpenGL.GLUT import * from OpenGL.GL import * def drawOneLine(x1, y1, x2, y2): glBegin(GL_LINES) glVertexf(x1, y1) glVertexf(x2, y2) glEnd() def display(): glClearColor(0.0, 0.0, 0.0, 0.0) glShadeModel(GL_FLAT) glClear(GL_COLOR_BUFFER_BIT) glColorf(1.0, 1.0, 1.0) glEnable(GL_LINE_STIPPLE) glLineStipple(1, 0x0101) drawOneLine(50.0, 125.0, 150.0, 125.0) glLineStipple(1, 0x00FF) drawOneLine(150.0, 125.0, 250.0, 125.0) glLineStipple(1, 0x1C47) drawOneLine(250.0, 125.0, 350.0, 125.0) glLineWidth(5.0) glLineStipple(1, 0x0101) drawOneLine(50.0, 100.0, 150.0, 100.0) glLineStipple (1, 0x00FF) drawOneLine(150.0, 100.0, 250.0, 100.0) glLineStipple(1, 0x1C47) drawOneLine(250.0, 100.0, 350.0, 100.0) glLineWidth(1.0); glLineStipple(1, 0x1C47) glBegin(GL_LINE_STRIP) for i in range(7): glVertexf(50.0 + (i * 50.0), 75.0) glEnd () for i in range(6): drawOneLine(50.0 + (i * 50.0), 50.0, 50.0 + ((i+1) * 50.0), 50.0) glLineStipple(5, 0x1C47); drawOneLine(50.0, 25.0, 350.0, 25.0); glFlush(); glutInit(sys.argv) glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA) glutCreateWindow("Primky") glutReshapeWindow(400, 150) glutPositionWindow(0, 0) glutDisplayFunc(display) glutMainLoop()
glShadeModel
void glShadeModel(GLenum mode); glShadeModel(mode) -> None
Parametry funkce jsou hodnoty GL_FLAT a GL_SMOOTH (výchozí). Funkce nastavuje typ stínování na objektech, je možné používat konstantní a Gouraudovo stínovaní. Konstantní stínování se zapne předáním hodnoty GL_FLAT, Gouraudovo pak hodnotou GL_SMOOTH. Při konstantním stínování je pro každou plošku spočítána jen jedna barva a ploška je poté touto barvou vykreslena. Gouraudovo stínování řeší problém tak, že se spočítají barvy na vrcholech plošky a vnitřek se vyplní přechodem mezi těmito barvami.
glEnable
void glEnable(GLenum cap); glEnable(cap) -> None void glDisable(GLenum cap); glDisable(cap) -> None GLboolean glIsEnabled(GLenum cap); glIsEnabled(cap) -> boolean
Funkce glEnable a glDisable slouží k povolování nebo zakazování možností knihovny, které jsou vypsány v následující tabulce. glIsEnabled vrací pravdivostní hodnotu podle toho, jestli je daná možnost povolena, či zakázána.
GL_ALPHA_TEST | GL_AUTO_NORMAL | GL_BLEND |
GL_CLIP_PLANE | GL_COLOR_LOGIC_OP | GL_COLOR_MATERIAL |
GL_COLOR_TABLE | GL_CONVOLUTION_1D | GL_CONVOLUTION_2D |
GL_CULL_FACE | GL_DEPTH_TEST | GL_DITHER |
GL_FOG | GL_HISTOGRAM | GL_INDEX_LOGIC_OP |
GL_LIGHT | GL_LIGHTING | GL_LINE_SMOOTH |
GL_LINE_STIPPLE | GL_MAP1_COLOR4 | GL_MAP1_INDEX |
GL_MAP1_NORMAL | GL_MAP1_TEXTURE_COORD1 | GL_MAP1_TEXTURE_COORD2 |
GL_MAP1_TEXTURE_COORD3 | GL_MAP1_TEXTURE_COORD4 | GL_MAP1_VERTEX3 |
GL_MAP1_VERTEX4 | GL_MAP2_COLOR4 | GL_MAP2_INDEX |
GL_MAP2_NORMAL | GL_MAP2_TEXTURE_COORD1 | GL_MAP2_TEXTURE_COORD2 |
GL_MAP2_TEXTURE_COORD3 | GL_MAP2_TEXTURE_COORD4 | GL_MAP2_VERTEX3 |
GL_MAP2_VERTEX4 | GL_MINMAX | GL_NORMALIZE |
GL_POINT_SMOOTH | GL_POLYGON_OFFSET_FILL | GL_POLYGON_OFFSET_LINE |
GL_POLYGON_OFFSET_POINT | GL_POLYGON_SMOOTH | GL_POLYGON_STIPPLE |
GL_POST_COLOR_MATRIX_COLOR_TABLE | GL_POST_CONVOLUTION_COLOR_TABLE | GL_RESCALE_NORMAL |
GL_SEPARABLE_2D | GL_SCISSOR_TEST | GL_STENCIL_TEST |
GL_TEXTURE_1D | GL_TEXTURE_2D | GL_TEXTURE_3D |
GL_TEXTURE_GEN_Q | GL_TEXTURE_GEN_R | GL_TEXTURE_GEN_S |
GL_TEXTURE_GEN_T |
Více informací naleznete v manuálových stránkách (man glEnable).
glLineStipple
void glLineStipple( GLint factor, GLushort pattern); glLineStipple(factor, pattern) -> None
Tato funkce umožňuje maskovat kreslenou úsečku. Funkci je předána šestnáctibitová maska, která je „nanesena“ na úsečku. Bity, které jsou nastaveny na 1, jsou vykresleny, nulové ne. Maska je funkci předána parametrem pattern. factor je faktor zvětšení masky ve směru úsečky. Maskování musíte nejdříve povolit příkazem
glEnable(GL_LINE_STIPPLE)
glLineWidth
void glLineWidth(GLfloat width); glLineWidth(width) -> None
Funkce nastavuje šířku přímky(defaultně 1.0 – 1 pixel).