From 2ed4868973b1b266954858d84d8fdedb8351b345 Mon Sep 17 00:00:00 2001 From: Matthew Berry Date: Sat, 31 Jul 2021 16:16:33 -0700 Subject: [PATCH] minor frontend cleanup --- src/crab.cr | 3 --- src/crab/common/frontend.cr | 2 -- .../controllers/stubbed_controller.cr | 1 + .../frontend/sdl_opengl_imgui_frontend.cr | 21 ++++++++++--------- src/crab/common/shaders/stubbed_colors.frag | 10 +++++++++ 5 files changed, 22 insertions(+), 15 deletions(-) create mode 100644 src/crab/common/shaders/stubbed_colors.frag diff --git a/src/crab.cr b/src/crab.cr index 7b4623d..61dc13e 100644 --- a/src/crab.cr +++ b/src/crab.cr @@ -3,9 +3,6 @@ require "option_parser" require "bitfield" require "sdl" -require "imgui" -require "imgui-backends" -require "imgui-backends/lib" require "./crab/common/*" require "./crab/common/frontend/*" diff --git a/src/crab/common/frontend.cr b/src/crab/common/frontend.cr index b6ee78a..8857273 100644 --- a/src/crab/common/frontend.cr +++ b/src/crab/common/frontend.cr @@ -1,5 +1,3 @@ -require "lib_gl" - abstract class Frontend def self.new(bios : String?, rom : String?, headless = false) if headless diff --git a/src/crab/common/frontend/controllers/stubbed_controller.cr b/src/crab/common/frontend/controllers/stubbed_controller.cr index f585ade..bae96ca 100644 --- a/src/crab/common/frontend/controllers/stubbed_controller.cr +++ b/src/crab/common/frontend/controllers/stubbed_controller.cr @@ -4,6 +4,7 @@ class StubbedController < Controller getter window_width : Int32 = 240 getter window_height : Int32 = 160 class_getter extensions = [] of String + class_getter shader : String? = "stubbed_colors.frag" def emu : Emu abort "Called emu method in StubbedController" diff --git a/src/crab/common/frontend/sdl_opengl_imgui_frontend.cr b/src/crab/common/frontend/sdl_opengl_imgui_frontend.cr index 3bfc1cd..3da976c 100644 --- a/src/crab/common/frontend/sdl_opengl_imgui_frontend.cr +++ b/src/crab/common/frontend/sdl_opengl_imgui_frontend.cr @@ -1,10 +1,15 @@ +require "imgui" +require "imgui-backends" +require "imgui-backends/lib" +require "lib_gl" + require "./controllers/*" require "./widgets/*" class SDLOpenGLImGuiFrontend < Frontend CONTROLLERS = [StubbedController, GBController, GBAController] ROM_EXTENSIONS = CONTROLLERS.reduce([] of String) { |acc, controller| acc + controller.extensions } - SCALE = 4 + SCALE = 3 SHADERS = "src/crab/common/shaders" @controller : Controller @@ -270,13 +275,11 @@ class SDLOpenGLImGuiFrontend < Frontend shader = LibGL.create_shader(type) LibGL.shader_source(shader, 1, pointerof(source_ptr), nil) LibGL.compile_shader(shader) - shader_compiled = 0 - LibGL.get_shader_iv(shader, LibGL::COMPILE_STATUS, pointerof(shader_compiled)) + LibGL.get_shader_iv(shader, LibGL::COMPILE_STATUS, out shader_compiled) if shader_compiled != LibGL::TRUE - log_length = 0 - LibGL.get_shader_iv(shader, LibGL::INFO_LOG_LENGTH, pointerof(log_length)) + LibGL.get_shader_iv(shader, LibGL::INFO_LOG_LENGTH, out log_length) s = " " * log_length - LibGL.get_shader_info_log(shader, log_length, pointerof(log_length), s) if log_length > 0 + LibGL.get_shader_info_log(shader, log_length, out _, s) if log_length > 0 abort "Error compiling shader: #{s}" end shader @@ -307,8 +310,7 @@ class SDLOpenGLImGuiFrontend < Frontend LibGL.blend_func(LibGL::SRC_ALPHA, LibGL::ONE_MINUS_SRC_ALPHA) - frame_buffer = 0_u32 - LibGL.gen_textures(1, pointerof(frame_buffer)) + LibGL.gen_textures(1, out frame_buffer) LibGL.active_texture(LibGL::TEXTURE0) LibGL.bind_texture(LibGL::TEXTURE_2D, frame_buffer) a = [LibGL::BLUE, LibGL::GREEN, LibGL::RED, LibGL::ONE] # flip the rgba to bgra where a is always 1 @@ -316,8 +318,7 @@ class SDLOpenGLImGuiFrontend < Frontend LibGL.tex_parameter_iv(LibGL::TEXTURE_2D, LibGL::TEXTURE_SWIZZLE_RGBA, a_ptr) LibGL.tex_parameter_i(LibGL::TEXTURE_2D, LibGL::TEXTURE_MIN_FILTER, LibGL::NEAREST) LibGL.tex_parameter_i(LibGL::TEXTURE_2D, LibGL::TEXTURE_MAG_FILTER, LibGL::NEAREST) - vao = 0_u32 # required even if not used in modern opengl - LibGL.gen_vertex_arrays(1, pointerof(vao)) + LibGL.gen_vertex_arrays(1, out vao) # required even if not used in modern opengl LibGL.bind_vertex_array(vao) gl_context diff --git a/src/crab/common/shaders/stubbed_colors.frag b/src/crab/common/shaders/stubbed_colors.frag new file mode 100644 index 0000000..7814400 --- /dev/null +++ b/src/crab/common/shaders/stubbed_colors.frag @@ -0,0 +1,10 @@ +#version 330 core + +in vec2 tex_coord; +out vec4 frag_color; + +uniform sampler2D input_texture; + +void main() { + frag_color = texture(input_texture, tex_coord); +}