alltom-glapp 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.sw?
2
+ .DS_Store
3
+ coverage
4
+ rdoc
5
+ pkg
data/README.textile ADDED
@@ -0,0 +1,43 @@
1
+ h1. GLApp - A tiny wrapper for ruby-opengl
2
+
3
+ It's simple:
4
+
5
+ # require "gl_app"
6
+ # Include GLApp::Engine
7
+
8
+ <pre><code>class MyGame
9
+ include GLApp::Engine
10
+ end</code></pre>
11
+ # Override as many of the callbacks as you need:
12
+
13
+ * setup
14
+ * update(seconds)
15
+ * draw
16
+ * keyboard_down(key, modifiers)
17
+ * keyboard_up(key, modifiers)
18
+ * special_keyboard_down(key, modifiers)
19
+ * special_keyboard_up(key, modifiers)
20
+ * mouse_click(button, state, x, y)
21
+ * mouse_dragging_motion(x, y)
22
+ * mouse_passive_motion(x, y)
23
+ # Instantiate GLApp with an instance of your engine, width, height and title, and do show.
24
+
25
+ <pre><code>app = GLApp.new(MyGame.new, 800, 600, "My game")
26
+ app.show</code></pre>
27
+ # Done!
28
+
29
+ Look at the scripts in the examples/ directory.
30
+ In fact, here's one:
31
+
32
+ require 'gl_app'
33
+
34
+ class MyGame
35
+ include GLApp::Engine
36
+ def draw
37
+ glTranslate(0, 0, -5)
38
+ glutSolidCube(2)
39
+ end
40
+ end
41
+
42
+ app = GLApp.new(MyGame.new, 800, 600, "My game")
43
+ app.show
data/Rakefile ADDED
@@ -0,0 +1,56 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "glapp"
8
+ gem.summary = %Q{TODO}
9
+ gem.email = "tom@alltom.com"
10
+ gem.homepage = "http://github.com/alltom/glapp"
11
+ gem.authors = ["Tom Lieber"]
12
+ # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
13
+ end
14
+
15
+ rescue LoadError
16
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
17
+ end
18
+
19
+ require 'rake/testtask'
20
+ Rake::TestTask.new(:test) do |test|
21
+ test.libs << 'lib' << 'test'
22
+ test.pattern = 'test/**/*_test.rb'
23
+ test.verbose = true
24
+ end
25
+
26
+ begin
27
+ require 'rcov/rcovtask'
28
+ Rcov::RcovTask.new do |test|
29
+ test.libs << 'test'
30
+ test.pattern = 'test/**/*_test.rb'
31
+ test.verbose = true
32
+ end
33
+ rescue LoadError
34
+ task :rcov do
35
+ abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
36
+ end
37
+ end
38
+
39
+
40
+ task :default => :test
41
+
42
+ require 'rake/rdoctask'
43
+ Rake::RDocTask.new do |rdoc|
44
+ if File.exist?('VERSION.yml')
45
+ config = YAML.load(File.read('VERSION.yml'))
46
+ version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
47
+ else
48
+ version = ""
49
+ end
50
+
51
+ rdoc.rdoc_dir = 'rdoc'
52
+ rdoc.title = "glapp #{version}"
53
+ rdoc.rdoc_files.include('README*')
54
+ rdoc.rdoc_files.include('lib/**/*.rb')
55
+ end
56
+
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1,4 @@
1
+ P6
2
+ 240 50
3
+ 255
4
+ ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!B�!B�!B�!B�!B�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!!�!!�!!�!!�!B�!B�!B�!B�!B�!!�!!�!B�!B�!B�!B�!B���������!!�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!!�!!�!!�!!�!!�!B�!B�!!�祄!!�!B�cc�!B�!B�!B�!B���!!�!!�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!!�!!�!!�!!��cB祄祄!!�!B�cc�cc�!B�!B�!B�!!�!!�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!!�!B�!!��cB祄祄祄!B�cc�cc�cc�!B�!B�!B�!!�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!B�!B�!B�!!��cB�cB!B�!B�cc�cc�cc�cc�cc�!B�!B�!B�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�cc�cc祥�cc�cc�!B�!B�!B�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!B�!B�!B�!B�!B�!B�!B�cc�cc�cc�cc�cc�cc�!!�!!�!!�!B�cc�cc�!B�!B�!B���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!B�!B�!B�!B�!B�!B�!B�!B�!B�cc����cc�!B�!!�!!������祥�cc�!B�!B�!B�cc�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!B�!!�!!�!!�!!�!!�!!�!!�!B�!B�!B�cc�!B�!B�!!������������祥�!!�!B�!Bƥ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!B�!B�!B�!B�!!����������������cc�!!�!B��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!!�!!�!!�!!�!!�!B�!B�!B�!B�!Bƥ��������������!!!���!!!���������������������������������������������������������������������������������������������������������������������������������������������������������!!�!!�!!�!!�!!�!!�!!�!!�����������������������������������������������������������������!!�!!�!!�!!�!!�!!�!!�!!�����������������������������������������������������������������������!!�!!�!!�!!�������������������������������������������������������������������!!�!!�!!�!!�!!�!!�!!�!!�����������������������������������������!!�!!�!!�!!�!B�!B�!B�!B�cc�������������!!!cc�!!!cc���������������������������������������������������������������������������������!!�!!�������������������������������������������������������������!!�!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!!�!!�������������������������������������������������������!!�!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!!�!!�����������������������������������������������������������!!�!!�!!�!!�!B�!B�!B�!B�!!�!!�!!�������������������������������������������������������!!�!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!!�!!�����������������������������������!B�!B�!!�!!�!!�!!�!BƥcB祄祄���������������cB���!!!!!!������������������������������������������������������������������������������!!�!!�!!���������������������������������������������������������!!�!B�!B�cc�cc�cc�cc�!B�!B�!B�!B�!B�!B�!B�!!���������������������������������������������������!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�����������������������������������������������������!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!���������������������������������������������������!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�������������������������������!B�!B�!B�!B�!!�!!�!!��cB祄���祄祄祄������祄祄!!!!!!cc�����������������������������������������������������������!!�!!�!B�!B�������������!!�!!�!!�!B���������������������������������������������������!!�!!�!B�cc�cc�cc�cc�cc�cc�cc�!B�!B�!B�!B�!B�!B�!B�!!���������������������������������������������!!�!!�!B�!B�!B�!B�!B�!B�cc�!B�!B�!B�!B�!B�!B�!B�!B�!!�����������������������������������������������!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�!B�!B�!!���������������������������������������������!!�!!�!B�!B�!B�!B�!B�!B�cc�!B�!B�!B�!B�!B�!B�!B�!B�!!���������������������������!B�!B�!B�!!�!!�!!�!!�!!��cB祄祄!!!祄祄祄祄祄祄�cB����������������������������������������������������������������!!�!B�!B�!B�!B���������!!�!!�!!�!B�������������������������������������������������!!�!B�cc�cc�cc�cc�cc�cc�cc����cc�!B�!B�!B�!B�!B�!B�!B�!B�!!�����������������������������������������!!�!B�!B�!B�!B�!B�!B�!B�cc����cc�!B�!B�!B�!B�!B�!B�!B�!B�!!�������������������������������������������!!�!B�!B�!B�!B�!B�!B�cc�!B�!B�!B�!B�!B�!B�!B�cc�!B�!B�!!�����������������������������������������!!�!B�!B�!B�!B�!B�!B�!B�cc����cc�!B�!B�!B�!B�!B�!B�!B�!B�!!�����������������������!B�!B�!!�!!�!!�!!�!!�!!�!!�!!��cB�cB祄�cB祄祄祄�cB�cB������������������������������������������������������������������!!�!!�!B�!B�!B�!B�!B���!!�!!�!!�!!�!B�!B���������������������������������������������!!�cc�cc�cc�!B�!B�!B�!B�cc�cc�cc�cc�cc�cc�cc�!B�!B�!B�!B�!B�!!���������������������������������������!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�!B�!B�cc�cc�!B�!B�!B�!B�!B�!!���������������������������������������!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!���������������������������������������!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�!B�!B�cc�cc�!B�!B�!B�!B�!B�!!�����������������������!B�!!���������!!�!!�!!�!!�!!�!!��cB�cB�cB�cB�cB������������������������������������������������������������������������!!�!B�!B�!B�!B�!B�!!�!!�!!�!!�!!�!B�!B�������������������������������������������!!�!B�cc�!B�!B�!B�!B�!B�!B�!B�cc�cc�cc�cc�������cc�!B�!B�!B�!B�!!�������������������������������������!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�������cc�!B�!B�!B�!B�!!�������������������������������������!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�cc�!B�!B�!B�!B�!B�!B�!B�!!�����������������������������������!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�������cc�!B�!B�!B�!B�!!���������������������������������!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!���������������������������������������������������������������������!!�!!�!!�!!�!B�!B�!B�!B�!B�!B�!!�!!�!B�!B�cc�!B�����������������������������������������!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�cc�cc�������������cc�!B�!B�!B�!B�!!���������������������������������!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�������������cc�!B�!B�!B�!B�!!���������������������������������!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�������cc�!B�!B�!B�!B�!B�!B�!!���������������������������������!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�������������cc�!B�!B�!B�!B�!!�������������������������������!!�!!�!!��cB祄祄!!�!BƥcB祄���cB�����祥ƥ��������������������������������������������������������������!!�!!�!!�!B�!!�������!!�!B�!B�!B�!B�!Bƥ��!B���������������������������������������!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�!B�cc�������������cc�!B�!B�!B�!B�!!�������������������������������!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�������������cc�!B�!B�cc�cc�!!�������������������������������!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�������cc�!B�!B�!B�!B�!B�!B�!!�������������������������������!!�!!�!B�!B�cc�cc�cc�cc�!B�!B�!B�!B�!B�!B�cc�������������cc�!B�!B�!B�!B�!!�����������������������������!!�!!�!!��cB祄祄!!�!BƥcB祄���������cc���������祥���������������������������������������������������!B�!B�!B���!!�!!�!B�!B�!Bƥ�����!!�!!���祥�!B�cc�!B�!B���������!!�����������������������������!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�!B�!B�cc�������cc�!B�!B�!B�!B�!B�!!�������������������������������!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�������cc�!B�!B�!B�cc�cc�!!�����������������������������!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�cc�!B�!B�!B�!B�!B�!B�!B�!!�������������������������������!!�!B�cc�cc�cc�cc�cc�cc�cc�!B�!B�!B�!B�!B�!B�cc�������cc�!B�!B�!B�!B�!B�!!�����������������������������!!���cBcc�������������cB祄祄���祄cc���祥�cc������������������������������������������������������!!�!B�!B�!B�!!�!!�������!Bƥ�����!!���祥�!!�!B�!B�!B�!B�������!!�!B���������������������������!!�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�!B�!B�!B�cc�cc�!B�!B�!B�!B�!B�!B�!!�����������������������������!!�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�cc�!B�!B�!B�cc�cc�!B�!!���������������������������!!�!!�!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�����������������������������!!�!!�!B�!!�cc�cc�cc�!B�cc�cc�cc�cc�!B�!B�!B�!B�!B�cc�cc�!B�!B�!B�!B�!B�!B�!!���������������������������������cc�������������������cB祄祄祄cc����cc�����������������������������������������������������������!!�!B�!B�!!�!!�cc���������������祥�!!�!B�!B�!B�!B�!!�!!�!!�!!�!!�!B���������������������������!!�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�������������������������������!!�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�cc�cc�!!���������������������������!!�!!�!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�����������������������������!!�!!�!B�!!�cc�!B�!B�!B�!B�!B�!B�cc�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!���������������������������������!!�cc������������������祥ƥcB祄!B�cc�cc���ƥ�ƥ������������������������������������������������������!!�!B�!!�!B�!B�!Bƥ��������������������������!!�!B�!!�!!�!!�!!�!!�!B�������������������������!!�!!�!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�����������������������������!!�!!�!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�cc�cc�cc�!B�!!���������������������������!!�!!�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�����������������������������!!�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�cc�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�����������������������������������cc���������������祥ƥ��!B�!B���cc���ƥ��cc�����������������������������������������������������!B�!!�!!�!!�!!�!B�!B�!!����������������������cB祄!!�!!�!!�!!�!!�!B�!B�������������������������!!�!!�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�cc�cc�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�����������������������������!!�!!�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�cc�!B�!B�!B�cc�cc�cc�cc�cc�cc�cc�!B�!!�������������������������!!�!!�!!�!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�����������������������������!!�!B�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�cc�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�����������������������������������cc�cc������祥���祥�cc�!B�!B�����cc�cc�������������������������������������������������!!���!B�!!�!!�!!�!!�!!�!B�!B����cc����������cc�cc��cB祄祄cc�!!�!!�!!�!B�!B�!B�����������������������!!�!!�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�����������������������������!!�!!�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�cc�cc�cc�cc�cc�cc�cc�!B�!!���������������������������!!�!!�!!�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�����������������������������!!�!B�!B�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�cc�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!���������������������������������������cc������祥ƥ��cc���!!�!B���������������������������������������������������������!!�!!�!!�!!�!!��cB祄!!�!!�!B�������cc�cc�cc�!B�cc�cc�cc�cc�!B�!!�!!�!B�!B�!B�������������������������!!�!!�!!�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�����������������������������!!�!!�!!�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!���������������������������!!�!!�!!�!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�����������������������������!!�!!�!!�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�����������������������������������������cc�cc�cc�cc�����!!�!B�����������������������������������������������������������!!�!!�!!�!!���cB祄!!�祄�������!!�!B�!B�!B�cc�cc�!B�!B�!B�!B�!B�cc�!B�������������������������!!�!!�!!�!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�������������������������������!!�!!�!!�!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!���������������������������!!�!!�!!�!!�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�������������������������������!!�!!�!!�!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�������������������������������������������!!�!!�!B�����cc�!!�!B�������������������������������������������������������������!!�!!�!!!!!!��cB祄�cB�cB!B�cc�cc�cc�!B�!B�!B�!B�!B�!B�!Bƥ��cc�!B�������������������������!!�!!�!!�!!�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�!B�!!�������������������������������!!�!!�!!�!!�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�!B�!!�����������������������������!!�!!�!!�!!�!!�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�������������������������������!!�!!�!!�!!�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�!B�!!�������������������������������������������cc����!!�!B���cc����!!�!Bƥ������������������������������������������������������������!!�cc����!!�!B�!!!cc��cB!!�cc�cc�cc����cc�cc�!B�!B�!B�!B�cc�cc�!B���������������������������!!�!!�!!�!!�!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�!!�!B�!!�������������������������������!!�!!�!!�!!�!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�!!�!B�!!�����������������������������!!�!!�!!�!!�!!�!B�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!���������������������������������!!�!!�!!�!!�!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�!!�!B�!!�����������������������������������������cc���ƥ�������祥�cc���������祥�����������������������������������������������������������cc���ƥ�������祥�cc�cc�!B�!B�cc�cc�cc�!B�!B�!B�!B�!B�!B�!B�!B�����������������������������!!�!!�!!�!!�!!�!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�!B�!!�!B�!B�!!���������������������������������!!�!!�!!�!!�!!�!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�!B�!!�!B�!B�!!�������������������������������!!�!B�!!�!!�!!�!!�!B�!!�!B�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�����������������������������������!!�!!�!!�!!�!!�!!�!!�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B�!!�!B�!!�!B�!B�!!�������������������������������������������cc�cc�cc���ƥ��cc�cc�cc���ƥ��cc�����������������������������������������������������������cc�cc�cc���ƥ��cc�cc�!B�cc�!B�!B�!B�!B�!B�!B�!B�!B�!B�!B���������������������������������!!�!!�!!�!!�!!�!!�!!�!B�!B�!!�!B�!B�!B�!B�!B�!!�!B�!!�!B�!!�!!�!!�!!�����������������������������������!!�!!�!!�!!�!!�!!�!!�!B�!B�!!�!B�!B�!B�!B�!B�!!�!B�!!�!B�!!�!!�!!�!!���������������������������������!!�!!�!!�!!�!!�!!�!!�!B�!!�!B�!!�!B�!!�!B�!!�!B�!!�!B�!!�!B�!!�!B�!!�������������������������������������!!�!!�!!�!!�!!�!!�!!�!B�!B�!!�!B�!B�!B�!B�!B�!!�!B�!!�!B�!!�!!�!!�!!���������������������������������������������!!!����!!!���ƥ�Ƅ���������������������������������������������������������!!!����!!!�������!B�!B�!B�!B�!B�!B�!B�!B���������������������������������������!!�!!�!!�!!�!!�!!�!!�!!�!B�!!�!B�!!�!B�!!�!B�!!�!B�!!�!!�!!�!!���������������������������������������!!�!!�!!�!!�!!�!!�!!�!!�!B�!!�!B�!!�!B�!!�!B�!!�!B�!!�!!�!!�!!�����������������������������������!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!B�!!�!B�!!�!B�!!�!B�!!�!!�!!�!!�!!�����������������������������������������!!�!!�!!�!!�!!�!!�!!�!!�!B�!!�!B�!!�!B�!!�!B�!!�!B�!!�!!�!!�!!���������������������������������������������!!!����������������!!!�������������������������������������������������������������!!!����������������!!!���!B�!B�!B�!B�!B������������������������������������������!!�!!�!!�!!�!!�!!�!!�!!�!!�!B�!!�!!�!!�!B�!!�!!�!!�!!�!!�!!�����������������������������������������!!�!!�!!�!!�!!�!!�!!�!!�!!�!B�!!�!!�!!�!B�!!�!!�!!�!!�!!�!!���������������������������������������!!�!B�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!���������������������������������������������!!�!!�!!�!!�!!�!!�!!�!!�!!�!B�!!�!!�!!�!B�!!�!!�!!�!!�!!�!!�����������������������������������������������!!!����������Ƅ�����ƥ���������������������������������������������������!!!����������Ƅ������!!�!!�!!������������������������������������������!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!���������������������������������������������!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�����������������������������������������!!�!!�!B�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�������������������������������������������������!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�������������������������������������������������!!!���������!!!��cc�cc���Ƅ�����������������������������������������������!!!���������!!!��cc�cc����!!�!!���������������������������������������������!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!���������������������������������������������������!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�����������������������������������������������!!�!!�!!�!B�!B�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�������������������������������������������������������!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�����������������������������������������������������!!!�������!!!��cc�cc�cc����������������������������������������������!!!�������!!!��cc�cc�cc����������������������������������������������!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!���������������������������������������������������������!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�����������������������������������������������������!!�!!�!!�!B�!B�!B�!B�!!�!!�!!�!!�!!�������������������������������������������������������������!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�!!�����������������������������������������������������������!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!������������������������������������!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!������������������������������������������!!�!!�!!�!!�!!�!!�!!�������������������������������������������������������������������!!�!!�!!�!!�!!�!!�!!�������������������������������������������������������������!!�!!�!!�!!�!!�!!�!!�������������������������������������������������������������������������!!�!!�!!�!!�!!�!!�!!�����������������������������������
@@ -0,0 +1,169 @@
1
+ require File.join(File.dirname(__FILE__), "..", "gl_app")
2
+ include GLApp::Engine
3
+ public
4
+
5
+ class Texture
6
+ attr_reader :num, :width, :height
7
+
8
+ # expects a P6 PPM, with no comments, and values 0-255
9
+ # mask is can be an RGB triple (ex: [255, 0, 255])
10
+ def initialize(filename, mask = nil)
11
+ # read the texture file
12
+ format, size, depth, pixels = File.read(filename).split(/\n/, 4)
13
+ @width, @height = size.split.map{|c| c.to_i}
14
+
15
+ # convert to ARGB, applying a mask if given
16
+ pixels = pack_pixarr(unpack_ppm(pixels, mask))
17
+
18
+ # create the OpenGL texture
19
+ # I hear it's more efficient if the dimensions are powers of 2
20
+ @num = glGenTextures(1).first
21
+ glBindTexture(GL_TEXTURE_2D, @num)
22
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
23
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
24
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, @width, @height, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels)
25
+ end
26
+
27
+ private
28
+
29
+ def unpack_ppm(ppm, mask = nil)
30
+ arr = []
31
+ each_triple(ppm.unpack("C*")) do |triple|
32
+ arr << triple + [triple == mask ? 0 : 255]
33
+ end
34
+ arr
35
+ end
36
+
37
+ def pack_pixarr(arr)
38
+ arr.flatten.pack("C*")
39
+ end
40
+
41
+ def each_triple(arr)
42
+ buf = []
43
+ arr.each do |i|
44
+ buf << i
45
+ if buf.length == 3
46
+ yield buf
47
+ buf = []
48
+ end
49
+ end
50
+ end
51
+
52
+ end
53
+
54
+ class Sprite
55
+ def initialize(texture, x, y, w, h)
56
+ @tex = texture
57
+ @x, @y, @w, @h = x, y, w, h
58
+ end
59
+
60
+ def render
61
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
62
+ glEnable(GL_BLEND)
63
+
64
+ glMatrixMode(GL_TEXTURE)
65
+ glPushMatrix
66
+ glLoadIdentity
67
+ glOrtho(0, 2*@tex.width, 0, 2*@tex.height, -1, 1)
68
+
69
+ glBindTexture(GL_TEXTURE_2D, @tex.num)
70
+ glBegin(GL_QUADS)
71
+ glColor3f(1.0, 1.0, 1.0)
72
+ glTexCoord2d(@x, @y)
73
+ glVertex2d(-@w/2, -@h/2)
74
+ glTexCoord2d(@x + @w, @y)
75
+ glVertex2d(@w/2, -@h/2)
76
+ glTexCoord2d(@x + @w, @y + @h)
77
+ glVertex2d(@w/2, @h/2)
78
+ glTexCoord2d(@x, @y + @h)
79
+ glVertex2d(-@w/2, @h/2)
80
+ glEnd
81
+
82
+ glMatrixMode(GL_TEXTURE)
83
+ glPopMatrix
84
+ glMatrixMode(GL_MODELVIEW)
85
+ glDisable(GL_BLEND)
86
+ end
87
+ end
88
+
89
+ # state machine encoding frame transitions for hedgehog animation
90
+ class HedgehogAction
91
+ attr_reader :frame
92
+
93
+ def initialize
94
+ @frame = 0
95
+ @frametime = 0
96
+ @state = :standing
97
+ end
98
+
99
+ def duck
100
+ if @state == :standing
101
+ @frame = 1
102
+ @state = :ducking
103
+ end
104
+ end
105
+
106
+ def stand
107
+ if @state != :standing
108
+ @frame = 1
109
+ @state = :getting_up
110
+ end
111
+ end
112
+
113
+ def update(seconds)
114
+ @frametime += seconds
115
+
116
+ while @frametime > 0.1
117
+ @frametime -= 0.1
118
+ if @state == :getting_up
119
+ @frame = 0
120
+ @state = :standing
121
+ elsif @state == :ducking
122
+ @frame = 2
123
+ @state = :spinning
124
+ elsif @state == :spinning
125
+ @frame = (((@frame - 2) + 1) % 4) + 2
126
+ end
127
+ end
128
+ end
129
+ end
130
+
131
+ def setup
132
+ glEnable(GL_TEXTURE_2D)
133
+
134
+ # cannot allocate textures until OpenGL window is created
135
+ # so be sure to do this in setup at the earliest
136
+ hedgehog = Texture.new("hedgehog.ppm", [1, 170, 225])
137
+ @sprites = (0..5).map { |i| Sprite.new(hedgehog, i*40, 0, 40, 50) }
138
+ @animator = HedgehogAction.new
139
+ end
140
+
141
+ def keyboard_down(key, modifiers)
142
+ @animator.duck
143
+ end
144
+
145
+ def keyboard_up(key, modifiers)
146
+ exit if key == 27 # escape
147
+ @animator.stand
148
+ end
149
+
150
+ def update(seconds)
151
+ @animator.update(seconds)
152
+ end
153
+
154
+ def draw
155
+ # change coordinate system to match screen pixels
156
+ glMatrixMode(GL_PROJECTION)
157
+ glLoadIdentity
158
+ glOrtho(0, 300, 300, 0, -1000, 1000)
159
+ glMatrixMode(GL_MODELVIEW)
160
+ glLoadIdentity
161
+
162
+ # draw a hedgehog in the center of the screen
163
+ glPushMatrix
164
+ glTranslate(150, 150, 0)
165
+ @sprites[@animator.frame].render
166
+ glPopMatrix
167
+ end
168
+
169
+ GLApp.new(self, 300, 300).show
@@ -0,0 +1,56 @@
1
+ require File.join(File.dirname(__FILE__), "..", "gl_app")
2
+
3
+ class Triangle
4
+ attr_accessor :angle
5
+
6
+ def initialize(angle)
7
+ @angle = angle
8
+ end
9
+
10
+ def self.boom(num)
11
+ slice = (2.0 * Math::PI) / num.to_f
12
+ (1..num).map { |i| Triangle.new(slice * i) }
13
+ end
14
+
15
+ def draw
16
+ glPushMatrix
17
+ glTranslate 0, 0.5, -5
18
+ glRotate 110, 1, 0, 0
19
+ glTranslate 3.0 * Math::sin(@angle), 3.0 * Math::cos(@angle), 0
20
+ glRotate @angle * 90, 1, 1, 1
21
+ glBegin GL_TRIANGLES
22
+ glColor 1, 0, 0
23
+ glVertex 0, 1, 0
24
+
25
+ glColor 0, 1, 0
26
+ glVertex -1, -1, 0
27
+
28
+ glColor 0, 0, 1
29
+ glVertex 1, -1, 0
30
+ glEnd
31
+ glPopMatrix
32
+ end
33
+ end
34
+
35
+ class TriangleDemo
36
+ include GLApp::Engine
37
+
38
+ def setup
39
+ @triangles = Triangle.boom(10)
40
+ end
41
+
42
+ def update(seconds)
43
+ @triangles.each { |tri| tri.angle += seconds }
44
+ end
45
+
46
+ def draw
47
+ @triangles.each { |tri| tri.draw }
48
+ end
49
+
50
+ def keyboard_up(key, modifiers)
51
+ exit if key == 27 # escape
52
+ end
53
+ end
54
+
55
+ app = GLApp.new(TriangleDemo.new, 800, 300, "Triangle demo")
56
+ app.show
@@ -0,0 +1,54 @@
1
+ # the same demo as triangles.rb except all of the hook methods are in
2
+ # the top-level instead of in a class
3
+
4
+ require File.join(File.dirname(__FILE__), "..", "gl_app")
5
+ include GLApp::Engine
6
+ public
7
+
8
+ class Triangle
9
+ attr_accessor :angle
10
+
11
+ def initialize(angle)
12
+ @angle = angle
13
+ end
14
+
15
+ def self.boom(num)
16
+ slice = (2.0 * Math::PI) / num.to_f
17
+ (1..num).map { |i| Triangle.new(slice * i) }
18
+ end
19
+
20
+ def draw
21
+ glPushMatrix
22
+ glTranslate(0, 0.5, -5)
23
+ glRotate(110, 1, 0, 0)
24
+ glTranslate(3.0 * Math::sin(@angle), 3.0 * Math::cos(@angle), 0)
25
+ glRotate(@angle * 90, 1, 1, 1)
26
+ glBegin(GL_TRIANGLES)
27
+ glColor(1, 0, 0)
28
+ glVertex(0, 1, 0)
29
+
30
+ glColor(0, 1, 0)
31
+ glVertex(-1, -1, 0)
32
+
33
+ glColor(0, 0, 1)
34
+ glVertex(1, -1, 0)
35
+ glEnd
36
+ glPopMatrix
37
+ end
38
+ end
39
+
40
+ def update(seconds)
41
+ @triangles.each { |tri| tri.angle += seconds }
42
+ end
43
+
44
+ def draw
45
+ @triangles.each { |tri| tri.draw }
46
+ end
47
+
48
+ def keyboard_up(key, modifiers)
49
+ exit if key == 27 # escape
50
+ end
51
+
52
+ @triangles = Triangle.boom(10)
53
+
54
+ GLApp.new(self, 800, 300).show
data/lib/glapp.rb ADDED
@@ -0,0 +1,197 @@
1
+ require 'rubygems'
2
+ require 'opengl'
3
+
4
+ class GLApp
5
+ def initialize(engine, width, height, title = "")
6
+ @engine = engine
7
+ @width = width
8
+ @height = height
9
+ @title = title
10
+ @running = false
11
+ self.gl_init
12
+ end
13
+
14
+ def update(seconds)
15
+ @engine.update(seconds)
16
+ end
17
+
18
+ def draw
19
+ @engine.draw
20
+ end
21
+
22
+ def keyboard(key, modifiers)
23
+ @engine.keyboard_down(key, modifiers)
24
+ end
25
+
26
+ def keyboard_up(key, modifiers)
27
+ @engine.keyboard_up(key, modifiers)
28
+ end
29
+
30
+ def special_keyboard(key, modifiers)
31
+ @engine.special_keyboard_down(key, modifiers)
32
+ end
33
+
34
+ def special_keyboard_up(key, modifiers)
35
+ @engine.special_keyboard_up(key, modifiers)
36
+ end
37
+
38
+ def mouse_click(button, state, x, y)
39
+ @engine.mouse_click(button, state, x, y)
40
+ end
41
+
42
+ def mouse_active_motion(x, y)
43
+ @engine.mouse_dragging_motion(x, y)
44
+ @engine.mouse_motion(x, y)
45
+ end
46
+
47
+ def mouse_passive_motion(x, y)
48
+ @engine.mouse_passive_motion(x, y)
49
+ @engine.mouse_motion(x, y)
50
+ end
51
+
52
+ def resize(width, height)
53
+ # avoid divide-by-zero
54
+ height = 1.0 if height <= 0
55
+
56
+ # Reset the coordinate system
57
+ glMatrixMode(GL_PROJECTION)
58
+ glLoadIdentity
59
+
60
+ # Set the viewport to be the entire window
61
+ glViewport(0, 0, width, height)
62
+
63
+ # Set the correct perspective
64
+ gluPerspective(45, width.to_f / height.to_f, 1, 1000)
65
+ glMatrixMode(GL_MODELVIEW)
66
+ glLoadIdentity
67
+ gluLookAt(0, 0, 5,
68
+ 0, 0, -1,
69
+ 0, 1, 0)
70
+
71
+ @width, @height = width, height
72
+ end
73
+
74
+ def show
75
+ if glutGameModeGet(GLUT_GAME_MODE_ACTIVE) != 0
76
+ glutLeaveGameMode
77
+ end
78
+
79
+ unless @window
80
+ glutInitWindowSize(@width, @height)
81
+ @window = glutCreateWindow(@title)
82
+ end
83
+
84
+ self.setup_context
85
+ self.go unless running?
86
+ end
87
+
88
+ protected
89
+
90
+ def go_fullscreen(width, height, title = "")
91
+ glutGameModeString([width, height].join("x"))
92
+
93
+ if glutGameModeGet(GLUT_GAME_MODE_POSSIBLE)
94
+ glutEnterGameMode
95
+ if glutGameModeGet(GLUT_GAME_MODE_ACTIVE) == 0
96
+ self.go_windowed
97
+ end
98
+ else
99
+ go_windowed
100
+ end
101
+
102
+ self.setup_context
103
+ self.go unless self.running?
104
+ end
105
+
106
+ def go
107
+ @running = true
108
+ @engine.setup
109
+ glutMainLoop
110
+ end
111
+
112
+ def running?
113
+ @running
114
+ end
115
+
116
+ def gl_init
117
+ glutInit
118
+ glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH)
119
+ end
120
+
121
+ def setup_context
122
+ glEnable(GL_DEPTH_TEST)
123
+
124
+ glutIgnoreKeyRepeat(1)
125
+
126
+ glutDisplayFunc(lambda do
127
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
128
+ glMatrixMode(GL_PROJECTION)
129
+ glLoadIdentity
130
+ gluPerspective(30.0, @width / @height, 0.1, 1000.0)
131
+
132
+ glMatrixMode(GL_MODELVIEW)
133
+ glLoadIdentity
134
+ draw
135
+ glutSwapBuffers
136
+ end)
137
+
138
+ glutIdleFunc(lambda do
139
+ time = Time.now
140
+ @last_time ||= time
141
+ delta = time - @last_time
142
+ update(delta)
143
+ @last_time = time
144
+ glutPostRedisplay
145
+ end)
146
+
147
+ glutKeyboardFunc(lambda do |key, x, y|
148
+ keyboard(key, glutGetModifiers)
149
+ end)
150
+
151
+ glutKeyboardUpFunc(lambda do |key, x, y|
152
+ keyboard_up(key, glutGetModifiers)
153
+ end)
154
+
155
+ glutSpecialFunc(lambda do |key, x, y|
156
+ special_keyboard(key, glutGetModifiers)
157
+ end)
158
+
159
+ glutSpecialUpFunc(lambda do |key, x, y|
160
+ special_keyboard_up(key, glutGetModifiers)
161
+ end)
162
+
163
+ glutMouseFunc(lambda do |button, state, x, y|
164
+ mouse_click(button, state, x, y)
165
+ end)
166
+
167
+ glutMotionFunc(lambda do |x, y|
168
+ mouse_active_motion(x, y)
169
+ end)
170
+
171
+ glutPassiveMotionFunc(lambda do |x, y|
172
+ mouse_passive_motion(x, y)
173
+ end)
174
+
175
+ glutReshapeFunc(lambda do |width, height|
176
+ resize(width, height)
177
+ end)
178
+
179
+ glEnable(GL_BLEND)
180
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
181
+ end
182
+
183
+ module Engine
184
+ def setup() end
185
+ def update(seconds) end
186
+ def draw() end
187
+ def keyboard_down(key, modifiers) end
188
+ def keyboard_up(key, modifiers) end
189
+ def special_keyboard_down(key, modifiers) end
190
+ def special_keyboard_up(key, modifiers) end
191
+ def mouse_click(button, state, x, y) end
192
+ def mouse_dragging_motion(x, y) end
193
+ def mouse_passive_motion(x, y) end
194
+ def mouse_motion(x, y) end
195
+ end
196
+ end
197
+
metadata ADDED
@@ -0,0 +1,61 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: alltom-glapp
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Tom Lieber
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-05-18 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description:
17
+ email: tom@alltom.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README.textile
24
+ files:
25
+ - .gitignore
26
+ - README.textile
27
+ - Rakefile
28
+ - VERSION
29
+ - examples/hedgehog.ppm
30
+ - examples/sprite.rb
31
+ - examples/triangles.rb
32
+ - examples/triangles2.rb
33
+ - lib/glapp.rb
34
+ has_rdoc: false
35
+ homepage: http://github.com/alltom/glapp
36
+ post_install_message:
37
+ rdoc_options:
38
+ - --charset=UTF-8
39
+ require_paths:
40
+ - lib
41
+ required_ruby_version: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ">="
44
+ - !ruby/object:Gem::Version
45
+ version: "0"
46
+ version:
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: "0"
52
+ version:
53
+ requirements: []
54
+
55
+ rubyforge_project:
56
+ rubygems_version: 1.2.0
57
+ signing_key:
58
+ specification_version: 3
59
+ summary: wraps ruby-opengl for making quick applets
60
+ test_files: []
61
+