void OpenGL::Deinitialise() { DeinitShapes(); TextCache::Flush(); }
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); }
void OpenGL::Deinitialise() { #ifdef USE_GLSL DeinitShaders(); #endif DeinitShapes(); TextCache::Flush(); }
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); }
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); }