use logo module to draw characters, remove VAOs/VBOs from gss.d
This commit is contained in:
parent
a1ff570721
commit
8e6a3ef870
93
src/gss.d
93
src/gss.d
@ -5,45 +5,26 @@ import glamour.vao;
|
|||||||
import glamour.shader;
|
import glamour.shader;
|
||||||
import glamour.vbo;
|
import glamour.vbo;
|
||||||
import gl3n.linalg;
|
import gl3n.linalg;
|
||||||
|
static import logoobj;
|
||||||
static import logo;
|
static import logo;
|
||||||
|
|
||||||
enum int WIDTH = 1920;
|
enum int WIDTH = 600;
|
||||||
enum int HEIGHT = 1080;
|
enum int HEIGHT = 450;
|
||||||
|
|
||||||
GLint position_idx;
|
GLint position_idx;
|
||||||
GLint position2_idx;
|
|
||||||
GLint color_idx;
|
|
||||||
GLint view_idx;
|
GLint view_idx;
|
||||||
GLint view2_idx;
|
GLint color_idx;
|
||||||
mat4 view_matrix;
|
mat4 view_matrix;
|
||||||
Shader program;
|
Shader program;
|
||||||
Shader program2;
|
Shader program2;
|
||||||
VAO vao;
|
|
||||||
|
|
||||||
void init()
|
void init()
|
||||||
{
|
{
|
||||||
logo.init();
|
logo.init();
|
||||||
glClearColor (1.0, 0.7, 0.0, 0.0);
|
// glClearColor (1.0, 0.7, 0.0, 0.0);
|
||||||
|
glClearColor (0.0, 0.0, 0.0, 0.0);
|
||||||
glViewport(0, 0, WIDTH, HEIGHT);
|
glViewport(0, 0, WIDTH, HEIGHT);
|
||||||
immutable string shader_src = `
|
immutable string shader_src = `
|
||||||
vertex:
|
|
||||||
uniform mat4 view;
|
|
||||||
in vec2 position;
|
|
||||||
in vec3 color;
|
|
||||||
out vec3 color_i;
|
|
||||||
void main(void)
|
|
||||||
{
|
|
||||||
gl_Position = view * vec4(position, 0.0, 1.0);
|
|
||||||
color_i = color;
|
|
||||||
}
|
|
||||||
fragment:
|
|
||||||
in vec3 color_i;
|
|
||||||
void main(void)
|
|
||||||
{
|
|
||||||
gl_FragColor = vec4(color_i, 1.0);
|
|
||||||
}
|
|
||||||
`;
|
|
||||||
immutable string shader2_src = `
|
|
||||||
vertex:
|
vertex:
|
||||||
uniform mat4 view;
|
uniform mat4 view;
|
||||||
in vec2 position;
|
in vec2 position;
|
||||||
@ -52,34 +33,17 @@ vertex:
|
|||||||
gl_Position = view * vec4(position, 0.0, 1.0);
|
gl_Position = view * vec4(position, 0.0, 1.0);
|
||||||
}
|
}
|
||||||
fragment:
|
fragment:
|
||||||
|
uniform vec3 color;
|
||||||
void main(void)
|
void main(void)
|
||||||
{
|
{
|
||||||
gl_FragColor = vec4(0, 0.3, 0.8, 1.0);
|
gl_FragColor = vec4(color, 1.0);
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
vao = new VAO();
|
|
||||||
vao.bind();
|
|
||||||
program = new Shader("program", shader_src);
|
program = new Shader("program", shader_src);
|
||||||
program2 = new Shader("program2", shader2_src);
|
|
||||||
program.bind();
|
program.bind();
|
||||||
position_idx = program.get_attrib_location("position");
|
position_idx = program.get_attrib_location("position");
|
||||||
position2_idx = program2.get_attrib_location("position");
|
|
||||||
color_idx = program.get_attrib_location("color");
|
|
||||||
float[] vertices = [0.4, 0.4, -0.4, 0.4, -0.4, -0.4, 0.4, -0.4];
|
|
||||||
float[] colors = [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0];
|
|
||||||
ushort[] indices = [0, 1, 2, 3];
|
|
||||||
Buffer vbo = new Buffer(vertices);
|
|
||||||
vbo.bind();
|
|
||||||
glEnableVertexAttribArray(position_idx);
|
|
||||||
glVertexAttribPointer(position_idx, 2, GL_FLOAT, GL_FALSE, 0, null);
|
|
||||||
Buffer cbo = new Buffer(colors);
|
|
||||||
cbo.bind();
|
|
||||||
glEnableVertexAttribArray(color_idx);
|
|
||||||
glVertexAttribPointer(color_idx, 3, GL_FLOAT, GL_FALSE, 0, null);
|
|
||||||
ElementBuffer ibo = new ElementBuffer(indices);
|
|
||||||
ibo.bind();
|
|
||||||
view_idx = program.get_uniform_location("view");
|
view_idx = program.get_uniform_location("view");
|
||||||
view2_idx = program2.get_uniform_location("view");
|
color_idx = program.get_uniform_location("color");
|
||||||
}
|
}
|
||||||
|
|
||||||
void display(SDL_Window * window)
|
void display(SDL_Window * window)
|
||||||
@ -87,20 +51,36 @@ void display(SDL_Window * window)
|
|||||||
glClear(GL_COLOR_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT);
|
||||||
|
|
||||||
view_matrix.make_identity();
|
view_matrix.make_identity();
|
||||||
view_matrix.rotatez(SDL_GetTicks() / 500.0);
|
// view_matrix.rotatez(SDL_GetTicks() / 500.0);
|
||||||
view_matrix.scale(HEIGHT / cast(float)WIDTH, 1.0, 1.0);
|
view_matrix.scale(HEIGHT / cast(float)WIDTH, 1.0, 1.0);
|
||||||
|
view_matrix.scale(0.25, 0.25, 0.25);
|
||||||
|
|
||||||
program.bind();
|
program.bind();
|
||||||
vao.bind();
|
|
||||||
glUniformMatrix4fv(view_idx, 1, GL_TRUE, view_matrix.value_ptr);
|
glUniformMatrix4fv(view_idx, 1, GL_TRUE, view_matrix.value_ptr);
|
||||||
glDrawElements(GL_TRIANGLE_FAN, 4, GL_UNSIGNED_SHORT, null);
|
|
||||||
|
|
||||||
view_matrix.make_identity();
|
float[] color = [0.0, 0.0, 1.0];
|
||||||
view_matrix.scale(HEIGHT / cast(float)WIDTH, 1.0, 1.0);
|
glUniform3fv(color_idx, 1, color.ptr);
|
||||||
|
for (int i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
logo.draw(logo.FACE, logo.GENTEX, i, position_idx);
|
||||||
|
}
|
||||||
|
|
||||||
program2.bind();
|
for (int i = 0; i < 11; i++)
|
||||||
glUniformMatrix4fv(view_idx, 1, GL_TRUE, view_matrix.value_ptr);
|
{
|
||||||
logo.draw(logo.WIRE, logo.GENTEX, 2, position2_idx);
|
logo.draw(logo.FACE, logo.CORPORATION, i, position_idx);
|
||||||
|
}
|
||||||
|
|
||||||
|
color = [1.0, 1.0, 1.0];
|
||||||
|
glUniform3fv(color_idx, 1, color.ptr);
|
||||||
|
for (int i = 0; i < 6; i++)
|
||||||
|
{
|
||||||
|
logo.draw(logo.WIRE, logo.GENTEX, i, position_idx);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < 11; i++)
|
||||||
|
{
|
||||||
|
logo.draw(logo.WIRE, logo.CORPORATION, i, position_idx);
|
||||||
|
}
|
||||||
|
|
||||||
SDL_GL_SwapWindow(window);
|
SDL_GL_SwapWindow(window);
|
||||||
}
|
}
|
||||||
@ -118,11 +98,12 @@ int main()
|
|||||||
}
|
}
|
||||||
|
|
||||||
SDL_Window * window = SDL_CreateWindow("Gentex ScreenSaver",
|
SDL_Window * window = SDL_CreateWindow("Gentex ScreenSaver",
|
||||||
0,
|
SDL_WINDOWPOS_UNDEFINED,
|
||||||
0,
|
SDL_WINDOWPOS_UNDEFINED,
|
||||||
WIDTH,
|
WIDTH,
|
||||||
HEIGHT,
|
HEIGHT,
|
||||||
SDL_WINDOW_OPENGL | SDL_WINDOW_BORDERLESS);
|
// SDL_WINDOW_OPENGL | SDL_WINDOW_BORDERLESS);
|
||||||
|
SDL_WINDOW_OPENGL);
|
||||||
SDL_GLContext context = SDL_GL_CreateContext(window);
|
SDL_GLContext context = SDL_GL_CreateContext(window);
|
||||||
|
|
||||||
if (window == null)
|
if (window == null)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user