Make window resizable

This commit is contained in:
Josh Holtrop 2024-01-25 21:19:06 -05:00
parent 8dc6e97585
commit eed5ac7586

View File

@ -13,15 +13,16 @@ ColorShader color_shader;
Array spinny_vao;
GLuint program_id;
mat4 view_matrix;
int window_width;
int window_height;
void init()
private void init()
{
glActiveTexture(GL_TEXTURE0);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glClearColor (1.0, 0.6, 0.0, 0.0);
glViewport(0, 0, WIDTH, HEIGHT);
glClearColor(1.0, 0.6, 0.0, 0.0);
spinny_vao = new Array();
spinny_vao.bind();
@ -69,14 +70,21 @@ fragment:
ibo.bind();
}
void display(SDL_Window * window)
private void resize(int width, int height)
{
window_width = width;
window_height = height;
glViewport(0, 0, width, height);
}
private void display(SDL_Window * window)
{
glClear(GL_COLOR_BUFFER_BIT);
color_shader.use();
spinny_vao.bind();
view_matrix.make_identity();
view_matrix.scale(HEIGHT / cast(float)WIDTH, 1.0, 1.0);
view_matrix.scale(window_height / cast(float)window_width, 1.0, 1.0);
view_matrix.rotatez(SDL_GetTicks() / 500.0);
color_shader.set_view(view_matrix.value_ptr);
glDrawElements(GL_TRIANGLE_FAN, 4, GL_UNSIGNED_SHORT, null);
@ -99,7 +107,7 @@ int main()
SDL_WINDOWPOS_UNDEFINED,
WIDTH,
HEIGHT,
SDL_WINDOW_OPENGL);
SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);
if (window == null)
{
@ -116,17 +124,39 @@ int main()
}
init();
resize(WIDTH, HEIGHT);
SDL_Event event;
outer:
for (;;)
{
if (SDL_PollEvent(&event))
{
if (event.type == SDL_QUIT)
break;
else if (event.type == SDL_KEYDOWN)
switch (event.type)
{
case SDL_QUIT:
break outer;
case SDL_KEYDOWN:
if (event.key.keysym.scancode == SDL_SCANCODE_ESCAPE)
{
break outer;
}
break;
case SDL_WINDOWEVENT:
switch (event.window.event)
{
case SDL_WINDOWEVENT_RESIZED:
resize(event.window.data1, event.window.data2);
break;
default:
break;
}
break;
default:
break;
}
}
display(window);