void clCanvas::Rect3D( const LMatrix4& Proj, const LMatrix4& MV, const LVector3& V1, const LVector3& V2, const LVector3& V3, const LVector3& V4, const clPtr<clGLTexture>& Texture, const clPtr<clGLSLShaderProgram>& SP ) { LGL3->glDisable( GL_DEPTH_TEST ); Texture->Bind( 0 ); clPtr<clGLSLShaderProgram> S = SP ? SP : FRect3DSP; S->Bind(); S->SetUniformNameMat4Array( "u_MVP", 1, MV * Proj ); FRect3D->Restart( 6 ); FRect3D->SetTexCoordV( LVector2( 0, 0 ) ); FRect3D->EmitVertexV( V1 ); FRect3D->SetTexCoordV( LVector2( 1, 0 ) ); FRect3D->EmitVertexV( V2 ); FRect3D->SetTexCoordV( LVector2( 0, 1 ) ); FRect3D->EmitVertexV( V4 ); FRect3D->SetTexCoordV( LVector2( 1, 0 ) ); FRect3D->EmitVertexV( V2 ); FRect3D->SetTexCoordV( LVector2( 1, 1 ) ); FRect3D->EmitVertexV( V3 ); FRect3D->SetTexCoordV( LVector2( 0, 1 ) ); FRect3D->EmitVertexV( V4 ); FRect3DVA->SetVertexAttribs( FRect3D ); FRect3DVA->Draw( false ); }
void clCanvas::TexturedRect2D( float X1, float Y1, float X2, float Y2, const LVector4& Color, const clPtr<clGLTexture>& Texture ) { LGL3->glDisable( GL_DEPTH_TEST ); Texture->Bind( 0 ); FTexRectSP->Bind(); FTexRectSP->SetUniformNameVec4Array( "u_Color", 1, Color ); FTexRectSP->SetUniformNameVec4Array( "u_RectSize", 1, LVector4( X1, Y1, X2, Y2 ) ); LGL3->glBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); LGL3->glEnable( GL_BLEND ); FRectVA->Draw( false ); LGL3->glDisable( GL_BLEND ); }