From 771b6a42473a602f8dcf4a529b9ca8d8488bbb4b Mon Sep 17 00:00:00 2001 From: Cyberarm Date: Mon, 12 Aug 2019 21:27:04 -0500 Subject: [PATCH] Switched back to old model renderer while fixing vbo based renderer, set stats text shadow color to black, fixed tab completion showing empty list of available options when tab completion triggered --- lib/renderer/opengl_renderer.rb | 5 +++-- lib/states/game_states/game.rb | 2 +- lib/ui/command.rb | 2 +- lib/wavefront/model.rb | 40 ++++++++++++++++++++++++--------- 4 files changed, 34 insertions(+), 15 deletions(-) diff --git a/lib/renderer/opengl_renderer.rb b/lib/renderer/opengl_renderer.rb index f2c4b83..351fa6e 100644 --- a/lib/renderer/opengl_renderer.rb +++ b/lib/renderer/opengl_renderer.rb @@ -15,12 +15,13 @@ class IMICFPS handleGlError - if Shader.available?("default") + if Shader.available?("ddefault") Shader.use("default") do |shader| glUniform3f(shader.attribute_location("worldPosition"), object.position.x, object.position.y, object.position.z) handleGlError - draw_model(object.model) + draw_mesh(object.model) + # draw_model(object.model) object.draw end else diff --git a/lib/states/game_states/game.rb b/lib/states/game_states/game.rb index bea5025..738c186 100644 --- a/lib/states/game_states/game.rb +++ b/lib/states/game_states/game.rb @@ -24,7 +24,7 @@ class IMICFPS @crosshair_color = Gosu::Color.rgb(255,127,0) # @font = Gosu::Font.new(18, name: "DejaVu Sans") - @text = Text.new("Pending...", x: 10, y: 10, z: 1, size: 18, font: "DejaVu Sans") + @text = Text.new("Pending...", x: 10, y: 10, z: 1, size: 18, font: "DejaVu Sans", shadow_color: Gosu::Color::BLACK) Light.new(x: 3, y: -6, z: 6, game_state: self) Light.new(x: 0, y: 100, z: 0, diffuse: Color.new(1.0, 0.5, 0.1), game_state: self) diff --git a/lib/ui/command.rb b/lib/ui/command.rb index 7126ad5..8daca81 100644 --- a/lib/ui/command.rb +++ b/lib/ui/command.rb @@ -111,7 +111,7 @@ class IMICFPS if list.size == 1 console.text_input.text = "#{split.first} #{split[1]} #{list.first} " else - console.stdin("Available options: #{list.map { |value| Commands::Style.highlight(value) }.join(",")}") + console.stdin("Available options: #{list.map { |value| Commands::Style.highlight(value) }.join(",")}") if list.size > 0 end end end diff --git a/lib/wavefront/model.rb b/lib/wavefront/model.rb index d4b9dd2..e052893 100644 --- a/lib/wavefront/model.rb +++ b/lib/wavefront/model.rb @@ -85,7 +85,6 @@ class IMICFPS def populate_vertex_buffer @vertices_buffer_size = 0 @vertices_buffer_data = [] - model_has_texture = @materials.any? { |id, mat| mat.texture_id != nil } verts = [] colors = [] @@ -98,7 +97,7 @@ class IMICFPS colors << face.colors.map { |vert| [vert.x, vert.y, vert.z] } norms << face.normals.map { |vert| [vert.x, vert.y, vert.z, vert.weight] } - if model_has_texture + if @has_texture uvs << face.uvs.map { |vert| [vert.x, vert.y, vert.z] } tex_ids << face.material.texture_id ? face.material.texture_id.to_f : -1.0 end @@ -108,16 +107,22 @@ class IMICFPS @vertices_buffer_data << vert @vertices_buffer_data << colors[i] @vertices_buffer_data << norms[i] - @vertices_buffer_data << uvs[i] if uvs.size > 0 - @vertices_buffer_data << tex_ids[i] if tex_ids.size > 0 + + # if @has_texture + # @vertices_buffer_data << uvs[i] if uvs.size > 0 + # @vertices_buffer_data << tex_ids[i] if tex_ids.size > 0 + # end end data_size = 0 data_size += Fiddle::SIZEOF_FLOAT * 3 * verts.size data_size += Fiddle::SIZEOF_FLOAT * 3 * colors.size data_size += Fiddle::SIZEOF_FLOAT * 4 * norms.size - data_size += Fiddle::SIZEOF_FLOAT * 3 * uvs.size - data_size += Fiddle::SIZEOF_FLOAT * 1 * tex_ids.size + + if @has_texture + data_size += Fiddle::SIZEOF_FLOAT * 3 * uvs.size + data_size += Fiddle::SIZEOF_FLOAT * 1 * tex_ids.size + end @vertices_buffer_size = data_size @@ -140,21 +145,34 @@ class IMICFPS program = Shader.get("default").program + stride = 0 + position_stride = Fiddle::SIZEOF_FLOAT * 3 + color_stride = Fiddle::SIZEOF_FLOAT * 3 + normal_stride = Fiddle::SIZEOF_FLOAT * 4 + uv_stride = Fiddle::SIZEOF_FLOAT * 3 + texture_id_stride = Fiddle::SIZEOF_FLOAT + + if @has_texture + stride = position_stride + color_stride + normal_stride + uv_stride + texture_id_stride + else + stride = position_stride + color_stride + normal_stride + end + # index, size, type, normalized, stride, pointer # vertices (positions) - glVertexAttribPointer(glGetAttribLocation(program, "inPosition"), 3, GL_FLOAT, GL_FALSE, Fiddle::SIZEOF_FLOAT * 3, nil) + glVertexAttribPointer(glGetAttribLocation(program, "inPosition"), 3, GL_FLOAT, GL_FALSE, stride, nil) handleGlError # colors - glVertexAttribPointer(glGetAttribLocation(program, "inColor"), 3, GL_FLOAT, GL_FALSE, Fiddle::SIZEOF_FLOAT * (3 + 3), nil) + glVertexAttribPointer(glGetAttribLocation(program, "inColor"), 3, GL_FLOAT, GL_FALSE, stride + position_stride, nil) handleGlError # normals - glVertexAttribPointer(glGetAttribLocation(program, "inNormal"), 4, GL_FLOAT, GL_FALSE, Fiddle::SIZEOF_FLOAT * (4 + 3 + 3), nil) + glVertexAttribPointer(glGetAttribLocation(program, "inNormal"), 4, GL_FLOAT, GL_FALSE, stride + position_stride + color_stride, nil) handleGlError # uvs - glVertexAttribPointer(glGetAttribLocation(program, "inUV"), 4, GL_FLOAT, GL_FALSE, Fiddle::SIZEOF_FLOAT * (3 + 4 + 3 + 3), nil) + glVertexAttribPointer(glGetAttribLocation(program, "inUV"), 3, GL_FLOAT, GL_FALSE, stride + position_stride + color_stride + normal_stride, nil) handleGlError # texture ids - glVertexAttribPointer(glGetAttribLocation(program, "inTextureID"), 1, GL_FLOAT, GL_FALSE, Fiddle::SIZEOF_FLOAT + (Fiddle::SIZEOF_FLOAT * (3 + 4 + 3 + 3)), nil) + glVertexAttribPointer(glGetAttribLocation(program, "inTextureID"), 1, GL_FLOAT, GL_FALSE, stride + position_stride + color_stride + normal_stride + uv_stride, nil) handleGlError glDisableVertexAttribArray(4)