fixed circle
This commit is contained in:
parent
8772b9266d
commit
58b10ada51
@ -13,8 +13,6 @@
|
|||||||
|
|
||||||
static const char *shader_vertex = R"END(
|
static const char *shader_vertex = R"END(
|
||||||
#version 150
|
#version 150
|
||||||
uniform mat4 model;
|
|
||||||
uniform mat4 view;
|
|
||||||
uniform mat4 projection;
|
uniform mat4 projection;
|
||||||
in vec2 vertex;
|
in vec2 vertex;
|
||||||
in vec2 tex_coord;
|
in vec2 tex_coord;
|
||||||
@ -25,7 +23,7 @@ out vec4 frag_Color;
|
|||||||
out vec2 frag_TexCoord;
|
out vec2 frag_TexCoord;
|
||||||
void main()
|
void main()
|
||||||
{
|
{
|
||||||
gl_Position = projection*(view*(model*vec4(vertex,0.0,1.0)));
|
gl_Position = projection*vec4(vertex + vec2(0.0, -0.05),0.0,1.0);
|
||||||
frag_TexCoord = tex_coord;
|
frag_TexCoord = tex_coord;
|
||||||
frag_Color = color;
|
frag_Color = color;
|
||||||
frag_DrawMode = drawmode;
|
frag_DrawMode = drawmode;
|
||||||
@ -122,16 +120,9 @@ void init(int width, int height)
|
|||||||
shader = link(compile(shader_vertex, GL_VERTEX_SHADER),
|
shader = link(compile(shader_vertex, GL_VERTEX_SHADER),
|
||||||
compile(shader_fragment, GL_FRAGMENT_SHADER));
|
compile(shader_fragment, GL_FRAGMENT_SHADER));
|
||||||
|
|
||||||
mat4 model, view;
|
|
||||||
|
|
||||||
mat4_set_identity(&model);
|
|
||||||
mat4_set_identity(&view);
|
|
||||||
|
|
||||||
resize(width, height);
|
resize(width, height);
|
||||||
glUseProgram(shader);
|
glUseProgram(shader);
|
||||||
|
|
||||||
glUniformMatrix4fv(glGetUniformLocation(shader, "model"), 1, 0, model.data);
|
|
||||||
glUniformMatrix4fv(glGetUniformLocation(shader, "view"), 1, 0, view.data);
|
|
||||||
glUniform1i(glGetUniformLocation(shader, "texture"), 0);
|
glUniform1i(glGetUniformLocation(shader, "texture"), 0);
|
||||||
glUseProgram(0);
|
glUseProgram(0);
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,7 @@ void begin()
|
|||||||
glDisable(GL_DEPTH_TEST);
|
glDisable(GL_DEPTH_TEST);
|
||||||
glDisable(GL_LIGHTING);
|
glDisable(GL_LIGHTING);
|
||||||
glDisable(GL_STENCIL_TEST);
|
glDisable(GL_STENCIL_TEST);
|
||||||
|
glDisable(GL_POLYGON_SMOOTH);
|
||||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||||
|
|
||||||
glPushClientAttrib(GL_CLIENT_ALL_ATTRIB_BITS);
|
glPushClientAttrib(GL_CLIENT_ALL_ATTRIB_BITS);
|
||||||
|
18
src/draw.cpp
18
src/draw.cpp
@ -132,16 +132,18 @@ void line(int x, int y, int dx, int dy, rgba color, int thickness)
|
|||||||
nx /= length;
|
nx /= length;
|
||||||
ny /= length;
|
ny /= length;
|
||||||
|
|
||||||
nx *= thickness * 0.5f;
|
float th = thickness;
|
||||||
ny *= thickness * 0.5f;
|
|
||||||
|
nx *= th * 0.5f;
|
||||||
|
ny *= th * 0.5f;
|
||||||
|
|
||||||
float px = ny;
|
float px = ny;
|
||||||
float py = -nx;
|
float py = -nx;
|
||||||
|
|
||||||
vertices[0].position = { x - nx + px, y - ny + py };
|
vertices[2].position = { float(x) - nx + px, float(y) - ny + py };
|
||||||
vertices[1].position = { x + nx + px, y + ny + py };
|
vertices[1].position = { float(x) - nx - px, float(y) - ny - py };
|
||||||
vertices[2].position = { x + dx + nx - px, y + dy + ny - py };
|
vertices[3].position = { ex + nx + px, ey + ny + py };
|
||||||
vertices[3].position = { x + dx - nx - px, y + dy - ny - py };
|
vertices[0].position = { ex + nx - px, ey + ny - py };
|
||||||
|
|
||||||
ftgl::vertex_buffer_push_back(detail::program::buffer, vertices, 4,
|
ftgl::vertex_buffer_push_back(detail::program::buffer, vertices, 4,
|
||||||
indices::rectangle, 6);
|
indices::rectangle, 6);
|
||||||
@ -178,11 +180,11 @@ void circle(int x, int y, int radius, rgba color, int thickness, int steps)
|
|||||||
{
|
{
|
||||||
float px = 0;
|
float px = 0;
|
||||||
float py = 0;
|
float py = 0;
|
||||||
for (int i = 0; i < steps; i++)
|
for (int i = 0; i <= steps; i++)
|
||||||
{
|
{
|
||||||
float ang = 2 * float(M_PI) * (float(i) / steps);
|
float ang = 2 * float(M_PI) * (float(i) / steps);
|
||||||
if (!i)
|
if (!i)
|
||||||
ang = 2 * float(M_PI) * (float(steps - 1) / float(steps));
|
ang = 2 * float(M_PI);
|
||||||
if (i)
|
if (i)
|
||||||
line(px, py, x - px + radius * cos(ang), y - py + radius * sin(ang),
|
line(px, py, x - px + radius * cos(ang), y - py + radius * sin(ang),
|
||||||
color, thickness);
|
color, thickness);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user