加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby 使用 OpenGL 的例子

发布时间:2020-12-17 04:12:43 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 require "opengl"require "glut"$light_diffuse = [1.0,0.7,1.0]$light_position = [1.0,1.0,0.0]$n = [ [-1.0,0.0,0.0],[0.2,[1.0,[0.0,-1.0,0.3,1.0

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

require "opengl"
require "glut"

$light_diffuse = [1.0,0.7,1.0]
$light_position = [1.0,1.0,0.0]
$n = [
  [-1.0,0.0,0.0],[0.2,[1.0,[0.0,-1.0,0.3,1.0],-1.0] ]

$faces = [
  [0,1,2,3],[3,6,2],[7,5,4],[4,[5,1],4,3] ]

def drawBox
  for i in (0..5)
    GL.Begin(GL::QUADS)
    GL.Normal(*($n[i]))
    GL.Vertex($v[$faces[i][0]])
    GL.Vertex($v[$faces[i][1]])
    GL.Vertex($v[$faces[i][2]])
    GL.Vertex($v[$faces[i][3]])
    GL.End()
  end
end

display = Proc.new {
  GL.Clear(GL::COLOR_BUFFER_BIT | GL::DEPTH_BUFFER_BIT)
  drawBox
  GLUT.SwapBuffers
}

def myinit
  $v = [[-1,-1,[-1,-1],[1,1]]

  GL.Light(GL::LIGHT0,GL::DIFFUSE,$light_diffuse)
  GL.Light(GL::LIGHT0,GL::POSITION,$light_position)
  GL.Enable(GL::LIGHT0)
  GL.Enable(GL::LIGHTING)

  GL.Enable(GL::DEPTH_TEST)

  GL.MatrixMode(GL::PROJECTION)
  GLU.Perspective(40.0,10.0)
  GL.MatrixMode(GL::MODELVIEW)
  GLU.LookAt(0.0,5.0,0.0)

  GL.Translate(0.0,-1.0)
  GL.Rotate(60,0.0)
  GL.Rotate(-20,1.0)
end
GLUT.Init
GLUT.InitDisplayMode(GLUT::DOUBLE | GLUT::RGB | GLUT::DEPTH)
GLUT.CreateWindow("red 3D lighted cube")
GLUT.DisplayFunc(display)
myinit
GLUT.MainLoop()

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读