alltom-glapp 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
+