Beispiel #1
0
void TBBitmapGL::SetData(uint32 *data)
{
	m_renderer->FlushBitmap(this);
	BindBitmap(this);
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, m_w, m_h, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
	TB_IF_DEBUG_SETTING(RENDER_BATCHES, dbg_bitmap_validations++);
}
Beispiel #2
0
UIBitmapGL::~UIBitmapGL() {
    m_renderer->FlushBitmap(this);
    if (m_texture == g_current_texture)
        BindBitmap(nullptr);

    glDeleteTextures(1, &m_texture);
}
Beispiel #3
0
TBBitmapGL::~TBBitmapGL()
{
	// Must flush and unbind before we delete the texture
	m_renderer->FlushBitmap(this);
	if (m_texture == g_current_texture)
		BindBitmap(nullptr);

	glDeleteTextures(1, &m_texture);
}
Beispiel #4
0
void UIRendererGL::RenderBatch(Batch *batch) {
    BindBitmap(batch->bitmap);
    if (g_current_batch != batch) {
        g_current_batch = batch;
    }
    glBindBuffer(GL_ARRAY_BUFFER, _buffer);
    glBufferData(GL_ARRAY_BUFFER, sizeof(Vertex) * batch->vertex_count, batch->vertex, GL_STATIC_DRAW);
    glVertexAttribPointer(_shader.enableVertexAttribute("a_color"), 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(Vertex), GL_OFFSET(offsetof(Batch, vertex[0].col)));
    glVertexAttribPointer(_shader.enableVertexAttribute("a_texcoord"), 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), GL_OFFSET(offsetof(Batch, vertex[0].u)));
    glVertexAttribPointer(_shader.enableVertexAttribute("a_pos"), 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), GL_OFFSET(offsetof(Batch, vertex[0].x)));

    glDrawArrays(GL_TRIANGLES, 0, batch->vertex_count);
    GL_checkError();
}
Beispiel #5
0
void TBRendererGL::RenderBatch(Batch *batch)
{
	// Bind texture and array pointers
	BindBitmap(batch->bitmap);
	if (g_current_batch != batch)
	{
		glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(Vertex), (void *) &batch->vertex[0].r);
		glTexCoordPointer(2, GL_FLOAT, sizeof(Vertex), (void *) &batch->vertex[0].u);
		glVertexPointer(2, GL_FLOAT, sizeof(Vertex), (void *) &batch->vertex[0].x);
		g_current_batch = batch;
	}

	// Flush
	glDrawArrays(GL_TRIANGLES, 0, batch->vertex_count);
}
Beispiel #6
0
bool TBBitmapGL::Init(int width, int height, uint32 *data)
{
	assert(width == TBGetNearestPowerOfTwo(width));
	assert(height == TBGetNearestPowerOfTwo(height));

	m_w = width;
	m_h = height;

	glGenTextures(1, &m_texture);
	BindBitmap(this);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

	SetData(data);

	return true;
}