diff --git a/src/gss.d b/src/gss.d index c0787c6..c08d072 100644 --- a/src/gss.d +++ b/src/gss.d @@ -5,45 +5,26 @@ import glamour.vao; import glamour.shader; import glamour.vbo; import gl3n.linalg; +static import logoobj; static import logo; -enum int WIDTH = 1920; -enum int HEIGHT = 1080; +enum int WIDTH = 600; +enum int HEIGHT = 450; GLint position_idx; -GLint position2_idx; -GLint color_idx; GLint view_idx; -GLint view2_idx; +GLint color_idx; mat4 view_matrix; Shader program; Shader program2; -VAO vao; void 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); 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: uniform mat4 view; in vec2 position; @@ -52,34 +33,17 @@ vertex: gl_Position = view * vec4(position, 0.0, 1.0); } fragment: + uniform vec3 color; 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); - program2 = new Shader("program2", shader2_src); program.bind(); 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"); - view2_idx = program2.get_uniform_location("view"); + color_idx = program.get_uniform_location("color"); } void display(SDL_Window * window) @@ -87,20 +51,36 @@ void display(SDL_Window * window) glClear(GL_COLOR_BUFFER_BIT); 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(0.25, 0.25, 0.25); program.bind(); - vao.bind(); glUniformMatrix4fv(view_idx, 1, GL_TRUE, view_matrix.value_ptr); - glDrawElements(GL_TRIANGLE_FAN, 4, GL_UNSIGNED_SHORT, null); - view_matrix.make_identity(); - view_matrix.scale(HEIGHT / cast(float)WIDTH, 1.0, 1.0); + float[] color = [0.0, 0.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(); - glUniformMatrix4fv(view_idx, 1, GL_TRUE, view_matrix.value_ptr); - logo.draw(logo.WIRE, logo.GENTEX, 2, position2_idx); + for (int i = 0; i < 11; i++) + { + 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); } @@ -118,11 +98,12 @@ int main() } SDL_Window * window = SDL_CreateWindow("Gentex ScreenSaver", - 0, - 0, + SDL_WINDOWPOS_UNDEFINED, + SDL_WINDOWPOS_UNDEFINED, WIDTH, HEIGHT, - SDL_WINDOW_OPENGL | SDL_WINDOW_BORDERLESS); +// SDL_WINDOW_OPENGL | SDL_WINDOW_BORDERLESS); + SDL_WINDOW_OPENGL); SDL_GLContext context = SDL_GL_CreateContext(window); if (window == null)