class CyberarmEngine::PerspectiveCamera
Attributes
aspect_ratio[RW]
field_of_view[RW]
max_view_distance[RW]
min_view_distance[RW]
orientation[RW]
position[RW]
Public Class Methods
new(position:, aspect_ratio:, orientation: Vector.new(0, 0, 0), field_of_view: 70.0, min_view_distance: 0.1, max_view_distance: 155.0)
click to toggle source
# File lib/cyberarm_engine/opengl/perspective_camera.rb, line 6 def initialize(position:, aspect_ratio:, orientation: Vector.new(0, 0, 0), field_of_view: 70.0, min_view_distance: 0.1, max_view_distance: 155.0) @position = position @orientation = orientation @aspect_ratio = aspect_ratio @field_of_view = field_of_view @min_view_distance = min_view_distance @max_view_distance = max_view_distance end
Public Instance Methods
draw()
click to toggle source
# File lib/cyberarm_engine/opengl/perspective_camera.rb, line 18 def draw glMatrixMode(GL_PROJECTION) glLoadIdentity gluPerspective(@field_of_view, @aspect_ratio, @min_view_distance, @max_view_distance) glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST) glRotatef(@orientation.x, 1, 0, 0) glRotatef(@orientation.y, 0, 1, 0) glTranslatef(-@position.x, -@position.y, -@position.z) glMatrixMode(GL_MODELVIEW) glLoadIdentity end
projection_matrix()
click to toggle source
# File lib/cyberarm_engine/opengl/perspective_camera.rb, line 30 def projection_matrix Transform.perspective(@field_of_view, @aspect_ratio, @min_view_distance, @max_view_distance) end
view_matrix()
click to toggle source
# File lib/cyberarm_engine/opengl/perspective_camera.rb, line 34 def view_matrix Transform.translate_3d(@position * -1) * Transform.rotate_3d(@orientation) end