- glBegin(GL_QUADS);
- glTexCoord2i(0,0); glVertex2f(-0.5f*w, -0.5f*h);
- glTexCoord2i(1,0); glVertex2f(0.5f*w, -0.5f*h);
- glTexCoord2i(1,1); glVertex2f(0.5f*w, 0.5f*h);
- glTexCoord2i(0,1); glVertex2f(-0.5*w,0.5*h);
- glEnd();
+void Screen::DebugFontInit(const char *name, float font_size)
+{
+ unsigned char font_atlas_data[1024*1024];
+ FILE *font_file = fopen(name, "rb");
+ fseek(font_file, 0, SEEK_END);
+ size_t font_file_size = ftell(font_file);
+ fseek(font_file, 0, SEEK_SET);
+ unsigned char *font_file_data = (unsigned char*)malloc(font_file_size);
+ fread(font_file_data, 1, font_file_size, font_file);
+ fclose(font_file);
+ stbtt_BakeFontBitmap(font_file_data,0, font_size, font_atlas_data,1024,1024, 32,96, m_debug_font_rects);
+ free(font_file_data);
+ glGenTextures(1, &m_debug_font_atlas);
+ glBindTexture(GL_TEXTURE_2D, m_debug_font_atlas);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RED, 1024,1024, 0, GL_RED, GL_UNSIGNED_BYTE, font_atlas_data);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ m_debug_font_size = font_size;
+
+ m_debug_font_vertices.SetUsage(GraphicsBuffer::BufferUsageStreamDraw);
+ m_debug_font_vertices.SetType(GraphicsBuffer::BufferTypeVertex);
+ m_debug_font_vertices.Upload(8192, nullptr);
+ m_debug_font_vertex_head = 0;
+
+ m_debug_font_indices.SetUsage(GraphicsBuffer::BufferUsageStreamDraw);
+ m_debug_font_indices.SetType(GraphicsBuffer::BufferTypeIndex);
+ m_debug_font_indices.Resize(500);
+ m_debug_font_index_head = 0;
+}
+
+void Screen::DebugFontClear()
+{
+ m_debug_font_x = m_debug_font_y = 0;
+ if (!m_debug_font_atlas) return;
+ DebugFontPrint("\n");
+}
+
+void Screen::DebugFontFlush()
+{
+
+
+ glEnable(GL_BLEND);
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ glBindTexture(GL_TEXTURE_2D, m_debug_font_atlas);