opengl3 0.0.1.pre3 → 0.0.1.pre4

Sign up to get free protection for your applications and to get access to all the features.
data/lib/glut.rb CHANGED
@@ -9,7 +9,11 @@ module GLUT
9
9
  ffi_lib "/System/Library/Frameworks/GLUT.framework/GLUT"
10
10
  when "linux"
11
11
  ffi_lib "libglut.so.3"
12
- else raise RuntimeError, "GLUT: Unsupported OS"
12
+ when "windows"
13
+ path = File.expand_path("../glut/#{FFI::Platform::ARCH}", __FILE__)
14
+ ffi_lib ["freeglut.dll", "#{path}/freeglut.dll"]
15
+ else
16
+ raise RuntimeError, "GLUT: Unsupported OS"
13
17
  end
14
18
 
15
19
  # keyboard / mouse callback constants
File without changes
File without changes
@@ -0,0 +1,28 @@
1
+ module OpenGL::Platform
2
+ # @private
3
+ module Windows
4
+ extend Base
5
+
6
+ def self.current_context?
7
+ not OpenGL32.wglGetCurrentContext().null?
8
+ end
9
+
10
+ def self.find_function_address(name)
11
+ return OpenGL32.lib.find_function(name.to_s) ||
12
+ OpenGL32.wglGetProcAddress(name.to_s)
13
+ end
14
+
15
+ module OpenGL32
16
+ extend FFI::Library
17
+ ffi_lib 'OpenGL32.dll'
18
+ callback :PROC, [], :void
19
+ def self.lib; ffi_libraries.last; end
20
+ attach_function :wglGetCurrentContext, [], :pointer
21
+ attach_function :wglGetProcAddress, [:string], :PROC
22
+ end
23
+ end
24
+
25
+ def self.current
26
+ Windows
27
+ end
28
+ end
data/lib/opengl/type.rb CHANGED
@@ -82,11 +82,24 @@ module OpenGL
82
82
  #
83
83
  def self.pointer(ptr)
84
84
  if ptr.is_a? Integer
85
- ptr = FFI::MemoryPointer(:pointer, n)
85
+ ptr = FFI::MemoryPointer.new(:pointer, n)
86
86
  end
87
87
  ptr.extend MemoryPointerInstanceMethods
88
88
  ptr.null? ? nil : ptr
89
89
  end
90
90
 
91
+ # Make sure offset is a pointer type
92
+ # @param [Integer, FFI::Pointer, nil] offset
93
+ # @return [FFI::Pointer]
94
+ #
95
+ def self.pointer_offset(offset)
96
+ case offset
97
+ when Integer then FFI::Pointer.new(offset)
98
+ when nil then FFI::Pointer.new(0)
99
+ when FFI::Pointer then offset
100
+ else raise ArgumentError, "Invalid type of 'offset'(=#{offset})"
101
+ end
102
+ end
103
+
91
104
  end
92
105
  end
@@ -17,6 +17,7 @@
17
17
  :GLsizei: :int32
18
18
  :GLint64: :int64
19
19
  :GLuint64: :uint64
20
+ :GLhalf: :uint16
20
21
  :GLfloat: :float
21
22
  :GLclampf: :float
22
23
  :GLdouble: :double
@@ -1,3 +1,3 @@
1
1
  module OpenGL
2
- VERSION = "0.0.1.pre3"
2
+ VERSION = "0.0.1.pre4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opengl3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.pre3
4
+ version: 0.0.1.pre4
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-10 00:00:00.000000000 Z
12
+ date: 2013-01-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ffi
@@ -66,23 +66,9 @@ executables: []
66
66
  extensions: []
67
67
  extra_rdoc_files: []
68
68
  files:
69
- - .gitignore
70
- - .yardopts
71
- - Gemfile
72
- - LICENSE.txt
73
- - README.md
74
- - Rakefile
75
- - examples/math3d.rb
76
- - examples/ogl-2_1-basic.rb
77
- - examples/ogl-3_2-attribute_less.rb
78
- - examples/ogl-3_2-basic.rb
79
- - examples/ogl-3_2-cube.rb
80
- - examples/ogl-3_2-texture.rb
81
- - examples/ogl-4_0-quad_tessellation.rb
82
- - examples/ogl-4_0-triangle_tessellation.rb
69
+ - lib/glut/i386/freeglut.dll.gitkeep
70
+ - lib/glut/x86_64/freeglut.dll.gitkeep
83
71
  - lib/glut.rb
84
- - lib/opengl.rb
85
- - lib/opengl/constants.rb
86
72
  - lib/opengl/constants/core/2_x/GL_VERSION_1_1.yml
87
73
  - lib/opengl/constants/core/2_x/GL_VERSION_1_2.yml
88
74
  - lib/opengl/constants/core/2_x/GL_VERSION_1_3.yml
@@ -136,8 +122,8 @@ files:
136
122
  - lib/opengl/constants/core/4_2/GL_ARB_shader_image_load_store.yml
137
123
  - lib/opengl/constants/core/4_2/GL_ARB_texture_storage.yml
138
124
  - lib/opengl/constants/core/4_2/GL_VERSION_4_2.yml
139
- - lib/opengl/constants/core/4_3/GL_ARB_ES3_compatibility.yml
140
125
  - lib/opengl/constants/core/4_3/GL_ARB_compute_shader.yml
126
+ - lib/opengl/constants/core/4_3/GL_ARB_ES3_compatibility.yml
141
127
  - lib/opengl/constants/core/4_3/GL_ARB_explicit_uniform_location.yml
142
128
  - lib/opengl/constants/core/4_3/GL_ARB_framebuffer_no_attachments.yml
143
129
  - lib/opengl/constants/core/4_3/GL_ARB_internalformat_query2.yml
@@ -152,13 +138,14 @@ files:
152
138
  - lib/opengl/constants/ext/GL_EXT_texture_compression_s3tc.yml
153
139
  - lib/opengl/constants/ext/GL_EXT_texture_filter_anisotropic.yml
154
140
  - lib/opengl/constants/ext/GL_EXT_texture_sRGB.yml
141
+ - lib/opengl/constants.rb
155
142
  - lib/opengl/debugging.rb
156
143
  - lib/opengl/gl.rb
157
- - lib/opengl/platform.rb
158
144
  - lib/opengl/platform/base.rb
159
145
  - lib/opengl/platform/darwin.rb
160
146
  - lib/opengl/platform/linux.rb
161
- - lib/opengl/raw.rb
147
+ - lib/opengl/platform/windows.rb
148
+ - lib/opengl/platform.rb
162
149
  - lib/opengl/raw/core/2_x/GL_VERSION_1_0.yml
163
150
  - lib/opengl/raw/core/2_x/GL_VERSION_1_1.yml
164
151
  - lib/opengl/raw/core/2_x/GL_VERSION_1_2.yml
@@ -204,15 +191,15 @@ files:
204
191
  - lib/opengl/raw/core/4_2/GL_ARB_texture_storage.yml
205
192
  - lib/opengl/raw/core/4_2/GL_ARB_transform_feedback_instanced.yml
206
193
  - lib/opengl/raw/core/4_2/GL_VERSION_4_2.yml
207
- - lib/opengl/type.rb
194
+ - lib/opengl/raw.rb
208
195
  - lib/opengl/type/default.yml
209
196
  - lib/opengl/type/i386-linux.yml
210
197
  - lib/opengl/type/i386-windows.yml
211
198
  - lib/opengl/type/x86_64-darwin.yml
212
199
  - lib/opengl/type/x86_64-linux.yml
213
200
  - lib/opengl/type/x86_64-windows.yml
201
+ - lib/opengl/type.rb
214
202
  - lib/opengl/version.rb
215
- - lib/opengl/wrapper.rb
216
203
  - lib/opengl/wrapper/base.rb
217
204
  - lib/opengl/wrapper/core/2_x/GL_VERSION_1_0.rb
218
205
  - lib/opengl/wrapper/core/2_x/GL_VERSION_1_1.rb
@@ -259,12 +246,8 @@ files:
259
246
  - lib/opengl/wrapper/core/4_2/GL_ARB_texture_storage.rb
260
247
  - lib/opengl/wrapper/core/4_2/GL_ARB_transform_feedback_instanced.rb
261
248
  - lib/opengl/wrapper/core/4_2/GL_VERSION_4_2.rb
262
- - opengl.gemspec
263
- - spec/spec_helper.rb
264
- - test/test_helper.rb
265
- - yard/database.rb
266
- - yard/dsl_handler.rb
267
- - yard/wrapper_handler.rb
249
+ - lib/opengl/wrapper.rb
250
+ - lib/opengl.rb
268
251
  homepage: https://github.com/davll/ruby-opengl
269
252
  licenses: []
270
253
  post_install_message:
@@ -289,7 +272,5 @@ rubygems_version: 1.8.24
289
272
  signing_key:
290
273
  specification_version: 3
291
274
  summary: OpenGL
292
- test_files:
293
- - spec/spec_helper.rb
294
- - test/test_helper.rb
275
+ test_files: []
295
276
  has_rdoc:
data/.gitignore DELETED
@@ -1,21 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- Gemfile.lock
7
- InstalledFiles
8
- _yardoc
9
- coverage
10
- doc/
11
- lib/bundler/man
12
- pkg
13
- rdoc
14
- spec/reports
15
- test/tmp
16
- test/version_tmp
17
- tmp
18
- .DS_Store
19
- *~
20
- *.swp
21
- .rbx
data/.yardopts DELETED
@@ -1,6 +0,0 @@
1
- --no-private
2
- --load yard/wrapper_handler.rb
3
- --load yard/dsl_handler.rb
4
- lib/opengl/**/*.rb
5
- -
6
- lib/glut.rb
data/Gemfile DELETED
@@ -1,8 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in opengl.gemspec
4
- gemspec
5
-
6
- gem 'yard', :platform => 'mri'
7
- gem 'redcarpet', :platform => 'mri'
8
-
data/LICENSE.txt DELETED
@@ -1,22 +0,0 @@
1
- Copyright (c) 2012 David Lin
2
-
3
- MIT License
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining
6
- a copy of this software and associated documentation files (the
7
- "Software"), to deal in the Software without restriction, including
8
- without limitation the rights to use, copy, modify, merge, publish,
9
- distribute, sublicense, and/or sell copies of the Software, and to
10
- permit persons to whom the Software is furnished to do so, subject to
11
- the following conditions:
12
-
13
- The above copyright notice and this permission notice shall be
14
- included in all copies or substantial portions of the Software.
15
-
16
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md DELETED
@@ -1,92 +0,0 @@
1
- # OpenGL (opengl3)
2
-
3
- OpenGL wrapper library for Ruby
4
-
5
- * Pure Ruby, no C/C++/Java extension included (thanks to ffi gem)
6
- * OpenGL 2.1 ~ 4.2
7
- * automatic error checking each function call
8
- * Ruby-style wrapper (not complete)
9
- * Inspired by PyOpenGL
10
-
11
- Tested on
12
-
13
- * Mac OS X 10.8 (MRI 1.9.3, Rubinius)
14
- * Linux (MRI 1.9.3, JRuby 1.7)
15
-
16
- ## Notice
17
-
18
- Since the project is not complete, many functions are still C-style.
19
- But don't worry, the gem makes use of `ffi` gem to import functions, and
20
- therefore you can use ffi objects like `FFI::MemoryPointer` to work
21
- with C-style OpenGL entrypoints.
22
-
23
- ## Ruby-Style OpenGL APIs
24
-
25
- Please take a look at `lib/opengl/wrapper/**/*.rb`
26
- to see if entrypoints are wrapped.
27
-
28
- * glGetString(pname) -> String
29
- * glGen__Objects__(count) -> Array<Integer>
30
- * glDelete__Objects__(Array<Integer>) -> nil
31
- * glGet__Value__fv(\*args, count) -> Array<Float>
32
- * glGet__Value__iv(\*args, count) -> Array<Integer>
33
- * glGet__Value__uiv(\*args, count) -> Array<Integer>
34
- * glShaderSource(shader, Array<String>) -> nil
35
- * glGetShaderInfoLog(shader) -> String
36
- * glGetProgramInfoLog(program) -> String
37
- * More Ruby-style functions coming soon
38
-
39
- block-style glMapBuffer / glMapBufferRange:
40
-
41
- ```ruby
42
- glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY) do |ptr|
43
- ptr.put_array_of_GLfloat(offset_in_bytes, [ 1.0, 2.0, 3.0 ])
44
- end
45
- ```
46
-
47
- And helper functions
48
-
49
- * glGetVersion() -> Array<Integer>
50
- * glGetShadingLanguageVersion() -> Array<Integer>
51
- * glGetAvailableExtensions() -> Array<String>
52
- * glIsShaderCompiled?(shader) -> Boolean
53
- * glIsProgramLinked?(program) -> Boolean
54
- * More helper functions coming soon
55
-
56
- ## Installation
57
-
58
- Add this line to your application's Gemfile:
59
-
60
- gem 'opengl3', :require => 'opengl'
61
-
62
- And then execute:
63
-
64
- $ bundle
65
-
66
- Or install it yourself as:
67
-
68
- $ gem install opengl3
69
-
70
- ## Usage
71
-
72
- ```ruby
73
- require 'opengl'
74
- class App
75
- include OpenGL::Constants
76
-
77
- def initialize
78
- # ... (window created)
79
- self.extend OpenGL::GL.entrypoints
80
- # OK, you can use OpenGL now
81
- end
82
-
83
- end
84
- ```
85
-
86
- ## Contributing
87
-
88
- 1. Fork it
89
- 2. Create your feature branch (`git checkout -b my-new-feature`)
90
- 3. Commit your changes (`git commit -am 'Add some feature'`)
91
- 4. Push to the branch (`git push origin my-new-feature`)
92
- 5. Create new Pull Request
data/Rakefile DELETED
@@ -1,26 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
3
-
4
- Rake::TestTask.new :spec do |t|
5
- t.libs << "spec"
6
- t.pattern = "spec/**/*_spec.rb"
7
- end
8
-
9
- Rake::TestTask.new :test do |t|
10
- t.libs << "test"
11
- t.pattern = "test/**/*_test.rb"
12
- end
13
-
14
- desc "Open an irb session preloaded with this library"
15
- task :console do
16
- sh "irb -rubygems -I lib -r opengl"
17
- end
18
-
19
- begin
20
- require "yard"
21
- rescue LoadError => e
22
- else
23
- YARD::Rake::YardocTask.new
24
- desc "Generate documentation"
25
- task(:doc => :yard)
26
- end
data/examples/math3d.rb DELETED
@@ -1,65 +0,0 @@
1
- require 'matrix'
2
-
3
- class Matrix
4
-
5
- def self.perspective(fovy, aspect, z_near, z_far)
6
- f, z_diff = Math.tan(Math::PI * 0.5 - fovy * 0.5), (z_near-z_far)
7
- return self[
8
- [ f/aspect, 0.0, 0.0, 0.0 ],
9
- [ 0.0, f, 0.0, 0.0 ],
10
- [ 0.0, 0.0, (z_far+z_near)/z_diff, (2.0*z_far*z_near)/z_diff ],
11
- [ 0.0, 0.0, -1.0, 0.0 ]
12
- ]
13
- end
14
-
15
- def self.translate(x, y, z)
16
- x, y, z = Float(x), Float(y), Float(z)
17
- return self[
18
- [ 1.0, 0.0, 0.0, x ],
19
- [ 0.0, 1.0, 0.0, y ],
20
- [ 0.0, 0.0, 1.0, z ],
21
- [ 0.0, 0.0, 0.0, 1.0 ]
22
- ]
23
- end
24
-
25
- def self.scale(x, y, z)
26
- x, y, z = Float(x), Float(y), Float(z)
27
- return self[
28
- [ x, 0.0, 0.0, 0.0 ],
29
- [ 0.0, y, 0.0, 0.0 ],
30
- [ 0.0, 0.0, z, 0.0 ],
31
- [ 0.0, 0.0, 0.0, 1.0 ]
32
- ]
33
- end
34
-
35
- def self.rotate_x(angle)
36
- c, s = Math.cos(angle), Math.sin(angle)
37
- return self[
38
- [ 1.0, 0.0, 0.0, 0.0 ],
39
- [ 0.0, c, -s, 0.0 ],
40
- [ 0.0, s, c, 0.0 ],
41
- [ 0.0, 0.0, 0.0, 1.0 ]
42
- ]
43
- end
44
-
45
- def self.rotate_y(angle)
46
- c, s = Math.cos(angle), Math.sin(angle)
47
- return self[
48
- [ c, 0.0, s, 0.0 ],
49
- [ 0.0, 1.0, 0.0, 0.0 ],
50
- [ -s, 0.0, c, 0.0 ],
51
- [ 0.0, 0.0, 0.0, 1.0 ]
52
- ]
53
- end
54
-
55
- def self.rotate_z(angle)
56
- c, s = Math.cos(angle), Math.sin(angle)
57
- return self[
58
- [ c, -s, 0.0, 0.0 ],
59
- [ s, c, 0.0, 0.0 ],
60
- [ 0.0, 0.0, 1.0, 0.0 ],
61
- [ 0.0, 0.0, 0.0, 1.0 ]
62
- ]
63
- end
64
-
65
- end