Ejemplo n.º 1
0
void
OpenGL::Deinitialise()
{
  DeinitShapes();

  TextCache::Flush();
}
Ejemplo n.º 2
0
void
OpenGL::InitShapes()
{
  DeinitShapes();

  assert(INT_ANGLE_RANGE % CIRCLE_SIZE == 0); // implies: assert(SIZE % 2 == 0)

  circle_buffer = MakeCircleBuffer(CIRCLE_SIZE);
  small_circle_buffer = MakeCircleBuffer(SMALL_CIRCLE_SIZE);
}
Ejemplo n.º 3
0
void
OpenGL::Deinitialise()
{
#ifdef USE_GLSL
  DeinitShaders();
#endif

  DeinitShapes();

  TextCache::Flush();
}
Ejemplo n.º 4
0
void
OpenGL::InitShapes()
{
  if (!OpenGL::vertex_buffer_object)
    return;

  DeinitShapes();

  assert(4096 % CIRCLE_SIZE == 0);  // implies: assert(SIZE % 2 == 0)

  RasterPoint *p = circle_data, *p2 = circle_data + (CIRCLE_SIZE / 2);
  for (unsigned i = 0; i < CIRCLE_SIZE / 2; ++i) {
    GLvalue x = ICOSTABLE[i * (4096 / CIRCLE_SIZE)];
    GLvalue y = ISINETABLE[i * (4096 / CIRCLE_SIZE)];

    p->x = x;
    p->y = y;
    ++p;

    p2->x = -x;
    p2->y = -y;
    ++p2;
  }

  circle_buffer = new GLArrayBuffer();
  circle_buffer->Load(sizeof(circle_data), circle_data);

  p = small_circle_data;
  p2 = circle_data;
  for (unsigned i = 0; i < SMALL_CIRCLE_SIZE; ++i) {
    p->x = p2->x >> 2;
    p->y = p2->y >> 2;

    ++p;
    p2 += CIRCLE_SIZE / SMALL_CIRCLE_SIZE;
  }

  small_circle_buffer = new GLArrayBuffer();
  small_circle_buffer->Load(sizeof(small_circle_data), small_circle_data);
}
Ejemplo n.º 5
0
void
OpenGL::InitShapes()
{
  if (!OpenGL::vertex_buffer_object)
    return;

  DeinitShapes();

  assert(4096 % CIRCLE_SIZE == 0);  // implies: assert(SIZE % 2 == 0)

  GLshort *p = circle_data, *p2 = circle_data + CIRCLE_SIZE;
  for (unsigned i = 0; i < CIRCLE_SIZE / 2; ++i) {
    GLshort x = ISINETABLE[(i * (4096 / CIRCLE_SIZE) + 1024) & 0xfff];
    GLshort y = ISINETABLE[i * (4096 / CIRCLE_SIZE)];

    *p++ = x;
    *p++ = y;

    *p2++ = -x;
    *p2++ = -y;
  }

  circle_buffer = new GLArrayBuffer();
  circle_buffer->Load(GLsizeiptr(sizeof(circle_data)), circle_data);

  p = small_circle_data;
  p2 = circle_data;
  for (unsigned i = 0; i < SMALL_CIRCLE_SIZE; ++i) {
    *p++ = p2[0] >> 2;
    *p++ = p2[1] >> 2;

    p2 += 2 * CIRCLE_SIZE / SMALL_CIRCLE_SIZE;
  }

  small_circle_buffer = new GLArrayBuffer();
  small_circle_buffer->Load(GLsizeiptr(sizeof(small_circle_data)),
                            small_circle_data);
}