Class: Bestguigui::Render3D
- Inherits:
-
Object
- Object
- Bestguigui::Render3D
- Defined in:
- lib/bestguigui_lab/render_3d.rb
Overview
Instancie-la une fois, garde une référence, utilise-la dans draw :
@renderer = Render3D.new
@renderer.render_3d(self) { @renderer.look_at(...) ; @model.draw }
Instance Method Summary collapse
-
#draw_ground(size: 50.0, color: Gosu::Color::FUCHSIA) ⇒ Object
Sol plat rapide (aucune texture) pour se repérer dans une scène en cours de préparation : un carré de size*2 de côté centré à l'origine.
-
#look_at(eye, center, up_vector = [0, 1, 0]) ⇒ Object
À appeler dans le bloc de render_3d, avant de dessiner, pour positionner la caméra : eye = position, center = point regardé.
-
#render_3d(window, z_order: 0, fov: 60.0, clip: [0.1, 1000.0], &block) ⇒ Object
fov : angle de champ de vision vertical, en degrés.
Instance Method Details
#draw_ground(size: 50.0, color: Gosu::Color::FUCHSIA) ⇒ Object
Sol plat rapide (aucune texture) pour se repérer dans une scène en cours de préparation : un carré de size*2 de côté centré à l'origine.
23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/bestguigui_lab/render_3d.rb', line 23 def draw_ground(size: 50.0, color: Gosu::Color::FUCHSIA) glColor4ub(color.red, color.green, color.blue, color.alpha) glBegin(GL_QUADS) glVertex3f(-size, 0, -size) glVertex3f(-size, 0, size) glVertex3f(size, 0, size) glVertex3f(size, 0, -size) glEnd glColor4ub(255, 255, 255, 255) # remet le blanc : ObjModel module sa texture avec la couleur courante end |
#look_at(eye, center, up_vector = [0, 1, 0]) ⇒ Object
À appeler dans le bloc de render_3d, avant de dessiner, pour positionner la caméra : eye = position, center = point regardé.
17 18 19 |
# File 'lib/bestguigui_lab/render_3d.rb', line 17 def look_at(eye, center, up_vector = [0, 1, 0]) gluLookAt(*eye, *center, *up_vector) end |
#render_3d(window, z_order: 0, fov: 60.0, clip: [0.1, 1000.0], &block) ⇒ Object
fov : angle de champ de vision vertical, en degrés. clip : [proche, lointain] — tout ce qui est en dehors n'est pas dessiné.
10 11 12 13 |
# File 'lib/bestguigui_lab/render_3d.rb', line 10 def render_3d(window, z_order: 0, fov: 60.0, clip: [0.1, 1000.0], &block) w, h = window.fullscreen? ? [Gosu.screen_width, Gosu.screen_height] : [window.width, window.height] Gosu.gl(z_order) { render_3d_frame(w, h, fov, clip, &block) } end |