mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-16 06:05:58 -06:00
52 lines
943 B
C++
52 lines
943 B
C++
#include "GLDraw.h"
|
|
|
|
namespace Upp {
|
|
|
|
void GLTriangles::Draw(const GLContext2D& dd)
|
|
{
|
|
if(elements.GetCount() == 0)
|
|
return;
|
|
|
|
static GLCode program(R"(
|
|
#version 130
|
|
attribute vec3 p;
|
|
attribute uvec3 c;
|
|
uniform vec2 offset;
|
|
uniform vec2 scale;
|
|
varying vec4 v_color;
|
|
void main()
|
|
{
|
|
gl_Position = vec4(scale * p.xy + offset, 0, 1);
|
|
v_color = vec4(1/255.0 * c.rgb, p.z);
|
|
}
|
|
)", R"(
|
|
varying vec4 v_color;
|
|
void main()
|
|
{
|
|
gl_FragColor = v_color;
|
|
}
|
|
)");
|
|
|
|
static int ioffset = program["offset"];
|
|
static int iscale = program["scale"];
|
|
|
|
GLVertexData va;
|
|
va.Add(pos, 3);
|
|
va.Add(color, 3);
|
|
va.Index(elements);
|
|
|
|
glEnable(GL_BLEND);
|
|
glDisable(GL_CULL_FACE);
|
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
|
|
|
glDisable(GL_DEPTH_TEST);
|
|
// glDepthFunc(GL_LEQUAL);
|
|
|
|
program(ioffset, dd.off)
|
|
(iscale, dd.vs)
|
|
;
|
|
|
|
va.Draw(program);
|
|
}
|
|
|
|
};
|