490
CompText::draw (float x,
490
CompText::draw (const GLMatrix &transform,
492
493
float alpha) const
495
495
GLint oldBlendSrc, oldBlendDst;
496
GLushort colorData[4];
497
GLfloat textureData[8];
498
GLfloat vertexData[12];
499
GLVertexBuffer *streamingBuffer = GLVertexBuffer::streamingBuffer ();
497
501
if (texture.empty ())
505
GLint oldBlendSrcAlpha, oldBlendDstAlpha;
506
glGetIntegerv (GL_BLEND_SRC_RGB, &oldBlendSrc);
507
glGetIntegerv (GL_BLEND_DST_RGB, &oldBlendDst);
508
glGetIntegerv (GL_BLEND_SRC_ALPHA, &oldBlendSrcAlpha);
509
glGetIntegerv (GL_BLEND_DST_ALPHA, &oldBlendDstAlpha);
500
511
glGetIntegerv (GL_BLEND_SRC, &oldBlendSrc);
501
512
glGetIntegerv (GL_BLEND_DST, &oldBlendDst);
503
wasBlend = glIsEnabled (GL_BLEND);
507
515
glBlendFunc (GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
509
glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
510
glColor4f (alpha, alpha, alpha, alpha);
517
colorData[0] = alpha * 65535;
518
colorData[1] = alpha * 65535;
519
colorData[2] = alpha * 65535;
520
colorData[3] = alpha * 65535;
512
522
for (unsigned int i = 0; i < texture.size (); i++)
517
527
tex->enable (GLTexture::Good);
521
glTexCoord2f (COMP_TEX_COORD_X (m, 0), COMP_TEX_COORD_Y (m, 0));
522
glVertex2f (x, y - height);
523
glTexCoord2f (COMP_TEX_COORD_X (m, 0), COMP_TEX_COORD_Y (m, height));
525
glTexCoord2f (COMP_TEX_COORD_X (m, width), COMP_TEX_COORD_Y (m, height));
526
glVertex2f (x + width, y);
527
glTexCoord2f (COMP_TEX_COORD_X (m, width), COMP_TEX_COORD_Y (m, 0));
528
glVertex2f (x + width, y - height);
529
streamingBuffer->begin (GL_TRIANGLE_STRIP);
532
vertexData[1] = y - height;
537
vertexData[6] = x + width;
538
vertexData[7] = y - height;
540
vertexData[9] = x + width;
544
textureData[0] = COMP_TEX_COORD_X (m, 0);
545
textureData[1] = COMP_TEX_COORD_Y (m, 0);
546
textureData[2] = COMP_TEX_COORD_X (m, 0);
547
textureData[3] = COMP_TEX_COORD_Y (m, height);
548
textureData[4] = COMP_TEX_COORD_X (m, width);
549
textureData[5] = COMP_TEX_COORD_Y (m, 0);
550
textureData[6] = COMP_TEX_COORD_X (m, width);
551
textureData[7] = COMP_TEX_COORD_Y (m, height);
553
streamingBuffer->addColors (1, colorData);
554
streamingBuffer->addVertices (4, vertexData);
555
streamingBuffer->addTexCoords (0, 4, textureData);
557
streamingBuffer->end ();
558
streamingBuffer->render (transform);
535
glColor4usv (defaultColor);
538
glDisable (GL_BLEND);
564
glBlendFuncSeparate (oldBlendSrc, oldBlendDst,
565
oldBlendSrcAlpha, oldBlendDstAlpha);
539
567
glBlendFunc (oldBlendSrc, oldBlendDst);
542
571
CompText::CompText () :