Progress towards modern gl made

This commit is contained in:
2019-12-05 17:23:02 -06:00
parent 93a9e2215c
commit 6aeee41a71
10 changed files with 97 additions and 62 deletions

View File

@@ -2,37 +2,40 @@ class IMICFPS
class OpenGLRenderer
include CommonMethods
def draw_object(object)
handleGlError
glEnable(GL_NORMALIZE)
glPushMatrix
glTranslatef(object.position.x, object.position.y, object.position.z)
glScalef(object.scale.x, object.scale.y, object.scale.z)
glRotatef(object.orientation.x, 1.0, 0, 0)
glRotatef(object.orientation.y, 0, 1.0, 0)
glRotatef(object.orientation.z, 0, 0, 1.0)
handleGlError
def draw_object(camera, lights, object)
if Shader.available?("ddefault")
Shader.use("default") do |shader|
glUniform3f(shader.attribute_location("worldPosition"), object.position.x, object.position.y, object.position.z)
shader.set_uniform("projection", camera.projection_matrix)
shader.set_uniform("view", camera.view_matrix)
shader.set_uniform("model", object.model_matrix)
# TODO: Upload and use lights
handleGlError
draw_mesh(object.model)
# draw_model(object.model)
draw_model(object.model)
object.draw
end
else
handleGlError
lights.each(&:draw)
camera.draw
glEnable(GL_DEPTH_TEST)
glEnable(GL_NORMALIZE)
glPushMatrix
glTranslatef(object.position.x, object.position.y, object.position.z)
glScalef(object.scale.x, object.scale.y, object.scale.z)
glRotatef(object.orientation.x, 1.0, 0, 0)
glRotatef(object.orientation.y, 0, 1.0, 0)
glRotatef(object.orientation.z, 0, 0, 1.0)
handleGlError
draw_mesh(object.model)
object.draw
glPopMatrix
end
handleGlError
glPopMatrix
handleGlError
end

View File

@@ -4,25 +4,23 @@ class IMICFPS
attr_reader :opengl_renderer, :bounding_box_renderer
def initialize(map:)
@map = map
@bounding_box_renderer = BoundingBoxRenderer.new(map: map)
def initialize
# @bounding_box_renderer = BoundingBoxRenderer.new(map: map)
@opengl_renderer = OpenGLRenderer.new
end
def draw
@map.entities.each do |object|
def draw(camera, lights, entities)
entities.each do |object|
if object.visible && object.renderable
# Render bounding boxes before transformation is applied
@bounding_box_renderer.create_bounding_box(object, object.model.bounding_box, object.debug_color, object.object_id) if $debug.get(:boundingboxes)
# @bounding_box_renderer.create_bounding_box(object, object.model.bounding_box, object.debug_color, object.object_id) if $debug.get(:boundingboxes)
@opengl_renderer.draw_object(object)
@opengl_renderer.draw_object(camera, lights, object)
end
end
@bounding_box_renderer.draw_bounding_boxes if $debug.get(:boundingboxes)
window.number_of_vertices+=@bounding_box_renderer.vertex_count if $debug.get(:boundingboxes)
# @bounding_box_renderer.draw_bounding_boxes if $debug.get(:boundingboxes)
# window.number_of_vertices+=@bounding_box_renderer.vertex_count if $debug.get(:boundingboxes)
# @bounding_box_renderer.bounding_boxes.clear
end