Exemplo n.º 1
0
//-----------------------------------------------------------------------------------------------
void CommandConsole::RenderTextCursor() const
{
	Renderer* renderer = Renderer::GetRenderer();
	renderer->PushMatrix();

	static const unsigned int LINE_START = 0;
	float xPosition = renderer->CalculateTextWidthFrom( "> " + m_prompt.currentInput, m_font, TEXT_LINE_HEIGHT, LINE_START, m_prompt.cursorLocation + 2 ) + 5.f;
	float yPosition = m_prompt.lowerLeftCorner.y + 5.f;		//start slightly below the baseline
	renderer->TranslateWorld( FloatVector3( xPosition, yPosition, 0.f ) );

	renderer->SetAlphaBlendingFunction( Renderer::ONE_MINUS_DESTINATION_COLOR, Renderer::NO_COLOR );
	renderer->BindBufferObject( Renderer::ARRAY_BUFFER, m_prompt.cursorVertexBufferID );

	static const int BEGINNING_OF_BUFFER = 0;
	static const int SIZE_OF_LINE_ARRAY_STRUCTURE = sizeof( VertexColorData2D );
	static const int NUMBER_OF_VERTEX_COORDINATES = 2;
	renderer->SetPointerToVertexArray( NUMBER_OF_VERTEX_COORDINATES, Renderer::FLOAT_TYPE, SIZE_OF_LINE_ARRAY_STRUCTURE, BEGINNING_OF_BUFFER );

	static const int NUMBER_OF_COLOR_COORDINATES = 4;
	renderer->SetPointerToColorArray( NUMBER_OF_COLOR_COORDINATES, Renderer::FLOAT_TYPE, SIZE_OF_LINE_ARRAY_STRUCTURE, ( float* )offsetof( VertexColorData2D, red ) );

	static const unsigned int NUMBER_OF_CURSOR_VERTICES = 2;
	renderer->SetLineWidth( 1.f );

	renderer->RenderVertexArray( Renderer::LINES, BEGINNING_OF_BUFFER, NUMBER_OF_CURSOR_VERTICES );

	renderer->BindBufferObject( Renderer::ARRAY_BUFFER, 0 );
	renderer->SetAlphaBlendingFunction( Renderer::SOURCE_ALPHA, Renderer::ONE_MINUS_SOURCE_ALPHA );
	renderer->PopMatrix();
}
Exemplo n.º 2
0
//-----------------------------------------------------------------------------------------------
void CommandConsole::RenderBackgroundPanes() const
{
	Renderer* renderer = Renderer::GetRenderer();
	renderer->BindBufferObject( Renderer::ARRAY_BUFFER, m_vertexBufferID );
	renderer->BindBufferObject( Renderer::INDEX_BUFFER, m_paneIndexBufferID );

	static const int BEGINNING_OF_BUFFER = 0;
	static const int SIZE_OF_QUAD_ARRAY_STRUCTURE = sizeof( PaneColorData );
	static const int NUMBER_OF_VERTEX_COORDINATES = 2;
	renderer->SetPointerToVertexArray( NUMBER_OF_VERTEX_COORDINATES, Renderer::FLOAT_TYPE, SIZE_OF_QUAD_ARRAY_STRUCTURE, BEGINNING_OF_BUFFER );

	static const int NUMBER_OF_COLOR_COORDINATES = 4;
	renderer->SetPointerToColorArray( NUMBER_OF_COLOR_COORDINATES, Renderer::FLOAT_TYPE, SIZE_OF_QUAD_ARRAY_STRUCTURE, ( float* )offsetof( PaneColorData, paneColor ) );
	
	renderer->RenderPartOfArray( Renderer::TRIANGLE_STRIP, 9, Renderer::UNSIGNED_SHORT_TYPE, BEGINNING_OF_BUFFER );

	renderer->BindBufferObject( Renderer::INDEX_BUFFER, 0 );
	renderer->BindBufferObject( Renderer::ARRAY_BUFFER, 0 );
}
Exemplo n.º 3
0
//-----------------------------------------------------------------------------------------------
void CommandConsole::GenerateTextCursorVBO()
{
	static const Color CURSOR_COLOR = Color( 1.f, 1.f, 1.f, 1.f );
	static const unsigned int NUMBER_OF_CURSOR_VERTICES = 8;

	VertexColorData2D cursorVertices[ NUMBER_OF_CURSOR_VERTICES ] = 
	{
		VertexColorData2D( FloatVector2( 0.f, 0.f ), CURSOR_COLOR ),
		VertexColorData2D( FloatVector2( 0.f, TEXT_LINE_HEIGHT ), CURSOR_COLOR )
	};

	Renderer* renderer = Renderer::GetRenderer();

	renderer->GenerateBuffer( 1, &m_prompt.cursorVertexBufferID );
	renderer->BindBufferObject( Renderer::ARRAY_BUFFER, m_prompt.cursorVertexBufferID );
	renderer->SendDataToBuffer( Renderer::ARRAY_BUFFER, NUMBER_OF_CURSOR_VERTICES * sizeof( VertexColorData2D ), &cursorVertices[ 0 ] );

	renderer->BindBufferObject( Renderer::ARRAY_BUFFER, 0 );
}
Exemplo n.º 4
0
//-----------------------------------------------------------------------------------------------
void CommandConsole::RenderBorders() const
{
	Renderer* renderer = Renderer::GetRenderer();
	renderer->BindBufferObject( Renderer::ARRAY_BUFFER, m_vertexBufferID );
	renderer->BindBufferObject( Renderer::INDEX_BUFFER, m_borderIndexBufferID );

	static const int BEGINNING_OF_BUFFER = 0;
	static const int SIZE_OF_QUAD_ARRAY_STRUCTURE = sizeof( PaneColorData );
	static const int NUMBER_OF_VERTEX_COORDINATES = 2;
	renderer->SetPointerToVertexArray( NUMBER_OF_VERTEX_COORDINATES, Renderer::FLOAT_TYPE, SIZE_OF_QUAD_ARRAY_STRUCTURE, BEGINNING_OF_BUFFER );

	static const int NUMBER_OF_COLOR_COORDINATES = 4;
	renderer->SetPointerToColorArray( NUMBER_OF_COLOR_COORDINATES, Renderer::FLOAT_TYPE, SIZE_OF_QUAD_ARRAY_STRUCTURE, ( float* )offsetof( PaneColorData, borderColor ) );

	renderer->SetLineWidth( BORDER_THICKNESS );
	renderer->RenderPartOfArray( Renderer::LINE_LOOP, 9, Renderer::UNSIGNED_SHORT_TYPE, BEGINNING_OF_BUFFER );

	renderer->BindBufferObject( Renderer::INDEX_BUFFER, 0 );
	renderer->BindBufferObject( Renderer::ARRAY_BUFFER, 0 );
}
Exemplo n.º 5
0
//-----------------------------------------------------------------------------------------------
void CommandConsole::GenerateConsolePaneVBO()
{
	static const unsigned int NUMBER_OF_PANE_VERTICES = 8;
	PaneColorData consolePaneVertices[ NUMBER_OF_PANE_VERTICES ] = 
	{
		PaneColorData( m_log.lowerLeftCorner, BACKGROUND_PANE_COLOR, BORDER_COLOR ),
		PaneColorData( FloatVector2( m_log.upperRightCorner.x, m_log.lowerLeftCorner.y ), BACKGROUND_PANE_COLOR, BORDER_COLOR ),
		PaneColorData( FloatVector2( m_log.lowerLeftCorner.x, m_log.upperRightCorner.y ), BACKGROUND_PANE_COLOR, BORDER_COLOR ),
		PaneColorData( m_log.upperRightCorner, BACKGROUND_PANE_COLOR, BORDER_COLOR ),

		PaneColorData( m_prompt.lowerLeftCorner, BACKGROUND_PANE_COLOR, BORDER_COLOR ),
		PaneColorData( FloatVector2( m_prompt.upperRightCorner.x, m_prompt.lowerLeftCorner.y ), BACKGROUND_PANE_COLOR, BORDER_COLOR ),
		PaneColorData( FloatVector2( m_prompt.lowerLeftCorner.x, m_prompt.upperRightCorner.y ), BACKGROUND_PANE_COLOR, BORDER_COLOR ),
		PaneColorData( m_prompt.upperRightCorner, BACKGROUND_PANE_COLOR, BORDER_COLOR )
	};

	static const unsigned int NUMBER_OF_PANE_INDICES = 9;
	unsigned short consolePaneIndices[ NUMBER_OF_PANE_INDICES ] = { 0, 1, 2, 3, 0xFFFF, 4, 5, 6, 7 };

	static const unsigned int NUMBER_OF_BORDER_INDICES = 9;
	unsigned short consoleBorderIndices[ NUMBER_OF_BORDER_INDICES ] = { 0, 1, 3, 2, 0xFFFF, 4, 5, 7, 6 };

	Renderer* renderer = Renderer::GetRenderer();

	renderer->GenerateBuffer( 1, &m_vertexBufferID );
	renderer->BindBufferObject( Renderer::ARRAY_BUFFER, m_vertexBufferID );
	renderer->SendDataToBuffer( Renderer::ARRAY_BUFFER, NUMBER_OF_PANE_VERTICES * sizeof( PaneColorData ), &consolePaneVertices[ 0 ] );

	renderer->GenerateBuffer( 1, &m_paneIndexBufferID );
	renderer->BindBufferObject( Renderer::INDEX_BUFFER, m_paneIndexBufferID);
	renderer->SendDataToBuffer( Renderer::INDEX_BUFFER, NUMBER_OF_PANE_INDICES * sizeof( unsigned short ), &consolePaneIndices[ 0 ] );

	renderer->GenerateBuffer( 1, &m_borderIndexBufferID );
	renderer->BindBufferObject( Renderer::INDEX_BUFFER, m_borderIndexBufferID);
	renderer->SendDataToBuffer( Renderer::INDEX_BUFFER, NUMBER_OF_BORDER_INDICES * sizeof( unsigned short ), &consoleBorderIndices[ 0 ] );

	renderer->BindBufferObject( Renderer::ARRAY_BUFFER, 0 );
}