rubygl 0.1.0 → 0.2.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.
- checksums.yaml +13 -5
- data/.travis/push-rdoc-to-gh-pages.sh +22 -0
- data/.travis.yml +18 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +12 -0
- data/LICENSE +21 -21
- data/README.md +40 -0
- data/Rakefile +98 -83
- data/bin/ffi_code_gen.rb +166 -166
- data/bin/gl_code_gen.rb +458 -458
- data/examples/faceted_example.rb +71 -64
- data/examples/instanced_example.rb +135 -127
- data/examples/phong_example.rb +80 -71
- data/ext/windows/RubyGL.so +0 -0
- data/lib/rubygl/event.rb +64 -0
- data/lib/{RubyGL → rubygl}/geometry.rb +216 -211
- data/lib/{RubyGL → rubygl}/math.rb +300 -300
- data/lib/{RubyGL → rubygl}/memory.rb +125 -121
- data/lib/rubygl/native/all_enums.rb +641 -0
- data/lib/{RubyGL/Native → rubygl/native}/glcontext.rb +23 -47
- data/lib/{RubyGL/Native → rubygl/native}/include/GLContext.h +36 -36
- data/lib/{RubyGL/Native → rubygl/native}/include/Input.h +15 -15
- data/lib/{RubyGL/Native → rubygl/native}/include/Window.h +27 -27
- data/lib/rubygl/native/input.rb +247 -0
- data/lib/{RubyGL/Native → rubygl/native}/opengl.rb +2808 -2032
- data/lib/{RubyGL/Native → rubygl/native}/src/GLContext.c +72 -72
- data/lib/{RubyGL/Native → rubygl/native}/src/Input.c +25 -25
- data/lib/{RubyGL/Native → rubygl/native}/src/Window.c +57 -57
- data/lib/{RubyGL/Native → rubygl/native}/window.rb +24 -24
- data/lib/{RubyGL → rubygl}/setup.rb +50 -50
- data/lib/{RubyGL → rubygl}/shader.rb +203 -203
- data/lib/{RubyGL → rubygl}/util.rb +77 -77
- data/lib/rubygl.rb +49 -48
- data/{RubyGL.gemspec → rubygl.gemspec} +20 -23
- data/test/test_util.rb +19 -0
- metadata +36 -33
- data/lib/RubyGL/Native/input.rb +0 -13
- data/lib/RubyGL/callback.rb +0 -10
@@ -1,73 +1,73 @@
|
|
1
|
-
#include "GLContext.h"
|
2
|
-
|
3
|
-
const SDL_GLattr RED_SIZE = SDL_GL_RED_SIZE,
|
4
|
-
GREEN_SIZE = SDL_GL_GREEN_SIZE,
|
5
|
-
BLUE_SIZE = SDL_GL_BLUE_SIZE,
|
6
|
-
ALPHA_SIZE = SDL_GL_ALPHA_SIZE,
|
7
|
-
BUFFER_SIZE = SDL_GL_BUFFER_SIZE,
|
8
|
-
DOUBLEBUFFER = SDL_GL_DOUBLEBUFFER,
|
9
|
-
DEPTH_SIZE = SDL_GL_DEPTH_SIZE,
|
10
|
-
STENCIL_SIZE = SDL_GL_STENCIL_SIZE,
|
11
|
-
ACCUM_RED_SIZE = SDL_GL_ACCUM_RED_SIZE,
|
12
|
-
ACCUM_GREEN_SIZE = SDL_GL_ACCUM_GREEN_SIZE,
|
13
|
-
ACCUM_BLUE_SIZE = SDL_GL_ACCUM_BLUE_SIZE,
|
14
|
-
ACCUM_ALPHA_SIZE = SDL_GL_ACCUM_ALPHA_SIZE,
|
15
|
-
STEREO = SDL_GL_STEREO,
|
16
|
-
MULTISAMPLEBUFFERS = SDL_GL_MULTISAMPLEBUFFERS,
|
17
|
-
MULTISAMPLESAMPLES = SDL_GL_MULTISAMPLESAMPLES,
|
18
|
-
ACCELERATED_VISUAL = SDL_GL_ACCELERATED_VISUAL,
|
19
|
-
CONTEXT_MAJOR_VERSION = SDL_GL_CONTEXT_MAJOR_VERSION,
|
20
|
-
CONTEXT_MINOR_VERSION = SDL_GL_CONTEXT_MINOR_VERSION,
|
21
|
-
CONTEXT_FLAGS = SDL_GL_CONTEXT_FLAGS,
|
22
|
-
CONTEXT_PROFILE_MASK = SDL_GL_CONTEXT_PROFILE_MASK,
|
23
|
-
SHARE_WITH_CURRENT_CONTEXT = SDL_GL_SHARE_WITH_CURRENT_CONTEXT,
|
24
|
-
FRAMEBUFFER_SRGB_CAPABLE = SDL_GL_FRAMEBUFFER_SRGB_CAPABLE;
|
25
|
-
|
26
|
-
const SDL_GLcontextFlag CONTEXT_DEBUG_FLAG = SDL_GL_CONTEXT_DEBUG_FLAG,
|
27
|
-
CONTEXT_FORWARD_COMPATIBLE_FLAG = SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG,
|
28
|
-
CONTEXT_ROBUST_ACCESS_FLAG = SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG,
|
29
|
-
CONTEXT_RESET_ISOLATION_FLAG = SDL_GL_CONTEXT_RESET_ISOLATION_FLAG;
|
30
|
-
|
31
|
-
const SDL_GLprofile CONTEXT_PROFILE_CORE = SDL_GL_CONTEXT_PROFILE_CORE,
|
32
|
-
CONTEXT_PROFILE_COMPATIBILITY = SDL_GL_CONTEXT_PROFILE_COMPATIBILITY,
|
33
|
-
CONTEXT_PROFILE_ES = SDL_GL_CONTEXT_PROFILE_ES;
|
34
|
-
|
35
|
-
int loadLibrary(const char* path)
|
36
|
-
{
|
37
|
-
return SDL_GL_LoadLibrary(path);
|
38
|
-
}
|
39
|
-
|
40
|
-
void unloadLibrary(void)
|
41
|
-
{
|
42
|
-
SDL_GL_UnloadLibrary();
|
43
|
-
}
|
44
|
-
|
45
|
-
SDL_GLContext createContext(SDL_Window* window)
|
46
|
-
{
|
47
|
-
return SDL_GL_CreateContext(window);
|
48
|
-
}
|
49
|
-
|
50
|
-
void deleteContext(SDL_GLContext context)
|
51
|
-
{
|
52
|
-
SDL_GL_DeleteContext(context);
|
53
|
-
}
|
54
|
-
|
55
|
-
int setAttribute(SDL_GLattr attr, int value)
|
56
|
-
{
|
57
|
-
return SDL_GL_SetAttribute(attr, value);
|
58
|
-
}
|
59
|
-
|
60
|
-
int makeCurrent(SDL_Window* window, SDL_GLContext context)
|
61
|
-
{
|
62
|
-
return SDL_GL_MakeCurrent(window, context);
|
63
|
-
}
|
64
|
-
|
65
|
-
int setSwapInterval(int interval)
|
66
|
-
{
|
67
|
-
return SDL_GL_SetSwapInterval(interval);
|
68
|
-
}
|
69
|
-
|
70
|
-
void swapWindow(SDL_Window* window)
|
71
|
-
{
|
72
|
-
SDL_GL_SwapWindow(window);
|
1
|
+
#include "GLContext.h"
|
2
|
+
|
3
|
+
const SDL_GLattr RED_SIZE = SDL_GL_RED_SIZE,
|
4
|
+
GREEN_SIZE = SDL_GL_GREEN_SIZE,
|
5
|
+
BLUE_SIZE = SDL_GL_BLUE_SIZE,
|
6
|
+
ALPHA_SIZE = SDL_GL_ALPHA_SIZE,
|
7
|
+
BUFFER_SIZE = SDL_GL_BUFFER_SIZE,
|
8
|
+
DOUBLEBUFFER = SDL_GL_DOUBLEBUFFER,
|
9
|
+
DEPTH_SIZE = SDL_GL_DEPTH_SIZE,
|
10
|
+
STENCIL_SIZE = SDL_GL_STENCIL_SIZE,
|
11
|
+
ACCUM_RED_SIZE = SDL_GL_ACCUM_RED_SIZE,
|
12
|
+
ACCUM_GREEN_SIZE = SDL_GL_ACCUM_GREEN_SIZE,
|
13
|
+
ACCUM_BLUE_SIZE = SDL_GL_ACCUM_BLUE_SIZE,
|
14
|
+
ACCUM_ALPHA_SIZE = SDL_GL_ACCUM_ALPHA_SIZE,
|
15
|
+
STEREO = SDL_GL_STEREO,
|
16
|
+
MULTISAMPLEBUFFERS = SDL_GL_MULTISAMPLEBUFFERS,
|
17
|
+
MULTISAMPLESAMPLES = SDL_GL_MULTISAMPLESAMPLES,
|
18
|
+
ACCELERATED_VISUAL = SDL_GL_ACCELERATED_VISUAL,
|
19
|
+
CONTEXT_MAJOR_VERSION = SDL_GL_CONTEXT_MAJOR_VERSION,
|
20
|
+
CONTEXT_MINOR_VERSION = SDL_GL_CONTEXT_MINOR_VERSION,
|
21
|
+
CONTEXT_FLAGS = SDL_GL_CONTEXT_FLAGS,
|
22
|
+
CONTEXT_PROFILE_MASK = SDL_GL_CONTEXT_PROFILE_MASK,
|
23
|
+
SHARE_WITH_CURRENT_CONTEXT = SDL_GL_SHARE_WITH_CURRENT_CONTEXT,
|
24
|
+
FRAMEBUFFER_SRGB_CAPABLE = SDL_GL_FRAMEBUFFER_SRGB_CAPABLE;
|
25
|
+
|
26
|
+
const SDL_GLcontextFlag CONTEXT_DEBUG_FLAG = SDL_GL_CONTEXT_DEBUG_FLAG,
|
27
|
+
CONTEXT_FORWARD_COMPATIBLE_FLAG = SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG,
|
28
|
+
CONTEXT_ROBUST_ACCESS_FLAG = SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG,
|
29
|
+
CONTEXT_RESET_ISOLATION_FLAG = SDL_GL_CONTEXT_RESET_ISOLATION_FLAG;
|
30
|
+
|
31
|
+
const SDL_GLprofile CONTEXT_PROFILE_CORE = SDL_GL_CONTEXT_PROFILE_CORE,
|
32
|
+
CONTEXT_PROFILE_COMPATIBILITY = SDL_GL_CONTEXT_PROFILE_COMPATIBILITY,
|
33
|
+
CONTEXT_PROFILE_ES = SDL_GL_CONTEXT_PROFILE_ES;
|
34
|
+
|
35
|
+
int loadLibrary(const char* path)
|
36
|
+
{
|
37
|
+
return SDL_GL_LoadLibrary(path);
|
38
|
+
}
|
39
|
+
|
40
|
+
void unloadLibrary(void)
|
41
|
+
{
|
42
|
+
SDL_GL_UnloadLibrary();
|
43
|
+
}
|
44
|
+
|
45
|
+
SDL_GLContext createContext(SDL_Window* window)
|
46
|
+
{
|
47
|
+
return SDL_GL_CreateContext(window);
|
48
|
+
}
|
49
|
+
|
50
|
+
void deleteContext(SDL_GLContext context)
|
51
|
+
{
|
52
|
+
SDL_GL_DeleteContext(context);
|
53
|
+
}
|
54
|
+
|
55
|
+
int setAttribute(SDL_GLattr attr, int value)
|
56
|
+
{
|
57
|
+
return SDL_GL_SetAttribute(attr, value);
|
58
|
+
}
|
59
|
+
|
60
|
+
int makeCurrent(SDL_Window* window, SDL_GLContext context)
|
61
|
+
{
|
62
|
+
return SDL_GL_MakeCurrent(window, context);
|
63
|
+
}
|
64
|
+
|
65
|
+
int setSwapInterval(int interval)
|
66
|
+
{
|
67
|
+
return SDL_GL_SetSwapInterval(interval);
|
68
|
+
}
|
69
|
+
|
70
|
+
void swapWindow(SDL_Window* window)
|
71
|
+
{
|
72
|
+
SDL_GL_SwapWindow(window);
|
73
73
|
}
|
@@ -1,26 +1,26 @@
|
|
1
|
-
#include "Input.h"
|
2
|
-
|
3
|
-
int initInput()
|
4
|
-
{
|
5
|
-
return SDL_InitSubSystem(SDL_INIT_EVENTS);
|
6
|
-
}
|
7
|
-
|
8
|
-
void quitInput()
|
9
|
-
{
|
10
|
-
SDL_QuitSubSystem(SDL_INIT_EVENTS);
|
11
|
-
}
|
12
|
-
|
13
|
-
void addEventWatch(SDL_EventFilter filter, void* userdata)
|
14
|
-
{
|
15
|
-
SDL_AddEventWatch(filter, userdata);
|
16
|
-
}
|
17
|
-
|
18
|
-
void deleteEventWatch(SDL_EventFilter filter, void* userdata)
|
19
|
-
{
|
20
|
-
SDL_DelEventWatch(filter, userdata);
|
21
|
-
}
|
22
|
-
|
23
|
-
void pumpEvents(void)
|
24
|
-
{
|
25
|
-
SDL_PumpEvents();
|
1
|
+
#include "Input.h"
|
2
|
+
|
3
|
+
int initInput()
|
4
|
+
{
|
5
|
+
return SDL_InitSubSystem(SDL_INIT_EVENTS);
|
6
|
+
}
|
7
|
+
|
8
|
+
void quitInput()
|
9
|
+
{
|
10
|
+
SDL_QuitSubSystem(SDL_INIT_EVENTS);
|
11
|
+
}
|
12
|
+
|
13
|
+
void addEventWatch(SDL_EventFilter filter, void* userdata)
|
14
|
+
{
|
15
|
+
SDL_AddEventWatch(filter, userdata);
|
16
|
+
}
|
17
|
+
|
18
|
+
void deleteEventWatch(SDL_EventFilter filter, void* userdata)
|
19
|
+
{
|
20
|
+
SDL_DelEventWatch(filter, userdata);
|
21
|
+
}
|
22
|
+
|
23
|
+
void pumpEvents(void)
|
24
|
+
{
|
25
|
+
SDL_PumpEvents();
|
26
26
|
}
|
@@ -1,58 +1,58 @@
|
|
1
|
-
#include "Window.h"
|
2
|
-
|
3
|
-
const SDL_WindowFlags FULLSCREEN = SDL_WINDOW_FULLSCREEN,
|
4
|
-
OPENGL = SDL_WINDOW_OPENGL,
|
5
|
-
SHOWN = SDL_WINDOW_SHOWN,
|
6
|
-
HIDDEN = SDL_WINDOW_HIDDEN,
|
7
|
-
BORDERLESS = SDL_WINDOW_BORDERLESS,
|
8
|
-
RESIZABLE = SDL_WINDOW_RESIZABLE,
|
9
|
-
MINIMIZED = SDL_WINDOW_MINIMIZED,
|
10
|
-
MAXIMIZED = SDL_WINDOW_MAXIMIZED,
|
11
|
-
INPUT_GRABBED = SDL_WINDOW_INPUT_GRABBED,
|
12
|
-
INPUT_FOCUS = SDL_WINDOW_INPUT_FOCUS,
|
13
|
-
MOUSE_FOCUS = SDL_WINDOW_MOUSE_FOCUS,
|
14
|
-
FULLSCREEN_DESKTOP = SDL_WINDOW_FULLSCREEN_DESKTOP,
|
15
|
-
FOREIGN = SDL_WINDOW_FOREIGN,
|
16
|
-
ALLOW_HIGHDPI = SDL_WINDOW_ALLOW_HIGHDPI;
|
17
|
-
|
18
|
-
int initWindow()
|
19
|
-
{
|
20
|
-
return SDL_InitSubSystem(SDL_INIT_VIDEO);
|
21
|
-
}
|
22
|
-
|
23
|
-
void quitWindow()
|
24
|
-
{
|
25
|
-
SDL_QuitSubSystem(SDL_INIT_VIDEO);
|
26
|
-
}
|
27
|
-
|
28
|
-
SDL_Window* createWindow(const char* title, int x, int y, int w, int h,
|
29
|
-
Uint32 flags)
|
30
|
-
{
|
31
|
-
return SDL_CreateWindow(title, x, y, w, h, flags);
|
32
|
-
}
|
33
|
-
|
34
|
-
void destroyWindow(SDL_Window* window)
|
35
|
-
{
|
36
|
-
SDL_DestroyWindow(window);
|
37
|
-
}
|
38
|
-
|
39
|
-
void hideWindow(SDL_Window* window)
|
40
|
-
{
|
41
|
-
SDL_HideWindow(window);
|
42
|
-
}
|
43
|
-
|
44
|
-
void showWindow(SDL_Window* window)
|
45
|
-
{
|
46
|
-
SDL_ShowWindow(window);
|
47
|
-
}
|
48
|
-
|
49
|
-
int setWindowBrightness(SDL_Window* window, float brightness)
|
50
|
-
{
|
51
|
-
return SDL_SetWindowBrightness(window, brightness);
|
52
|
-
}
|
53
|
-
|
54
|
-
int showSimpleMessageBox(Uint32 flags, const char* title, const char* message,
|
55
|
-
SDL_Window* window)
|
56
|
-
{
|
57
|
-
return SDL_ShowSimpleMessageBox(flags, title, message, window);
|
1
|
+
#include "Window.h"
|
2
|
+
|
3
|
+
const SDL_WindowFlags FULLSCREEN = SDL_WINDOW_FULLSCREEN,
|
4
|
+
OPENGL = SDL_WINDOW_OPENGL,
|
5
|
+
SHOWN = SDL_WINDOW_SHOWN,
|
6
|
+
HIDDEN = SDL_WINDOW_HIDDEN,
|
7
|
+
BORDERLESS = SDL_WINDOW_BORDERLESS,
|
8
|
+
RESIZABLE = SDL_WINDOW_RESIZABLE,
|
9
|
+
MINIMIZED = SDL_WINDOW_MINIMIZED,
|
10
|
+
MAXIMIZED = SDL_WINDOW_MAXIMIZED,
|
11
|
+
INPUT_GRABBED = SDL_WINDOW_INPUT_GRABBED,
|
12
|
+
INPUT_FOCUS = SDL_WINDOW_INPUT_FOCUS,
|
13
|
+
MOUSE_FOCUS = SDL_WINDOW_MOUSE_FOCUS,
|
14
|
+
FULLSCREEN_DESKTOP = SDL_WINDOW_FULLSCREEN_DESKTOP,
|
15
|
+
FOREIGN = SDL_WINDOW_FOREIGN,
|
16
|
+
ALLOW_HIGHDPI = SDL_WINDOW_ALLOW_HIGHDPI;
|
17
|
+
|
18
|
+
int initWindow()
|
19
|
+
{
|
20
|
+
return SDL_InitSubSystem(SDL_INIT_VIDEO);
|
21
|
+
}
|
22
|
+
|
23
|
+
void quitWindow()
|
24
|
+
{
|
25
|
+
SDL_QuitSubSystem(SDL_INIT_VIDEO);
|
26
|
+
}
|
27
|
+
|
28
|
+
SDL_Window* createWindow(const char* title, int x, int y, int w, int h,
|
29
|
+
Uint32 flags)
|
30
|
+
{
|
31
|
+
return SDL_CreateWindow(title, x, y, w, h, flags);
|
32
|
+
}
|
33
|
+
|
34
|
+
void destroyWindow(SDL_Window* window)
|
35
|
+
{
|
36
|
+
SDL_DestroyWindow(window);
|
37
|
+
}
|
38
|
+
|
39
|
+
void hideWindow(SDL_Window* window)
|
40
|
+
{
|
41
|
+
SDL_HideWindow(window);
|
42
|
+
}
|
43
|
+
|
44
|
+
void showWindow(SDL_Window* window)
|
45
|
+
{
|
46
|
+
SDL_ShowWindow(window);
|
47
|
+
}
|
48
|
+
|
49
|
+
int setWindowBrightness(SDL_Window* window, float brightness)
|
50
|
+
{
|
51
|
+
return SDL_SetWindowBrightness(window, brightness);
|
52
|
+
}
|
53
|
+
|
54
|
+
int showSimpleMessageBox(Uint32 flags, const char* title, const char* message,
|
55
|
+
SDL_Window* window)
|
56
|
+
{
|
57
|
+
return SDL_ShowSimpleMessageBox(flags, title, message, window);
|
58
58
|
}
|
@@ -1,25 +1,25 @@
|
|
1
|
-
require 'ffi'
|
2
|
-
|
3
|
-
module RubyGL::Native
|
4
|
-
attach_function :initWindow, [], :int
|
5
|
-
attach_function :quitWindow, [], :void
|
6
|
-
attach_function :createWindow, [:string, :int, :int, :int, :int, :uint32], :pointer
|
7
|
-
attach_function :destroyWindow, [:pointer], :void
|
8
|
-
attach_function :hideWindow, [:pointer], :void
|
9
|
-
attach_function :showWindow, [:pointer], :void
|
10
|
-
attach_function :setWindowBrightness, [:pointer, :float], :int
|
11
|
-
attach_function :showSimpleMessageBox, [:uint32, :string, :string, :pointer], :int
|
12
|
-
|
13
|
-
attach_variable :FULLSCREEN, :int
|
14
|
-
attach_variable :OPENGL, :int
|
15
|
-
attach_variable :SHOWN, :int
|
16
|
-
attach_variable :HIDDEN, :int
|
17
|
-
attach_variable :BORDERLESS, :int
|
18
|
-
attach_variable :RESIZABLE, :int
|
19
|
-
attach_variable :MINIMIZED, :int
|
20
|
-
attach_variable :MAXIMIZED, :int
|
21
|
-
attach_variable :INPUT_FOCUS, :int
|
22
|
-
attach_variable :MOUSE_FOCUS, :int
|
23
|
-
attach_variable :FULLSCREEN_DESKTOP, :int
|
24
|
-
attach_variable :ALLOW_HIGHDPI, :int
|
1
|
+
require 'ffi'
|
2
|
+
|
3
|
+
module RubyGL::Native
|
4
|
+
attach_function :initWindow, [], :int
|
5
|
+
attach_function :quitWindow, [], :void
|
6
|
+
attach_function :createWindow, [:string, :int, :int, :int, :int, :uint32], :pointer
|
7
|
+
attach_function :destroyWindow, [:pointer], :void
|
8
|
+
attach_function :hideWindow, [:pointer], :void
|
9
|
+
attach_function :showWindow, [:pointer], :void
|
10
|
+
attach_function :setWindowBrightness, [:pointer, :float], :int
|
11
|
+
attach_function :showSimpleMessageBox, [:uint32, :string, :string, :pointer], :int
|
12
|
+
|
13
|
+
attach_variable :FULLSCREEN, :int
|
14
|
+
attach_variable :OPENGL, :int
|
15
|
+
attach_variable :SHOWN, :int
|
16
|
+
attach_variable :HIDDEN, :int
|
17
|
+
attach_variable :BORDERLESS, :int
|
18
|
+
attach_variable :RESIZABLE, :int
|
19
|
+
attach_variable :MINIMIZED, :int
|
20
|
+
attach_variable :MAXIMIZED, :int
|
21
|
+
attach_variable :INPUT_FOCUS, :int
|
22
|
+
attach_variable :MOUSE_FOCUS, :int
|
23
|
+
attach_variable :FULLSCREEN_DESKTOP, :int
|
24
|
+
attach_variable :ALLOW_HIGHDPI, :int
|
25
25
|
end
|
@@ -1,51 +1,51 @@
|
|
1
|
-
require_relative './native/glcontext'
|
2
|
-
require_relative './native/window'
|
3
|
-
|
4
|
-
module RubyGL
|
5
|
-
|
6
|
-
class DefaultSetup
|
7
|
-
# The args hash accepts position and size values to be applied to the window.
|
8
|
-
# :x, :y, :width, :height
|
9
|
-
def initialize(args = {})
|
10
|
-
RubyGL::Native.initWindow
|
11
|
-
RubyGL::Native.initInput
|
12
|
-
RubyGL::Native.loadLibrary(FFI::Pointer::NULL)
|
13
|
-
|
14
|
-
RubyGL::Native.setAttribute(:context_major_version, 4)
|
15
|
-
RubyGL::Native.setAttribute(:context_minor_version, 2)
|
16
|
-
RubyGL::Native.setAttribute(:context_profile_mask, RubyGL::Native.CONTEXT_PROFILE_COMPATIBILITY)
|
17
|
-
|
18
|
-
RubyGL::Native.setAttribute(:depth_size, 24)
|
19
|
-
RubyGL::Native.setAttribute(:doublebuffer, 1)
|
20
|
-
|
21
|
-
@window = RubyGL::Native.createWindow("RubyGL Window",
|
22
|
-
args[:x] || 50, args[:y] || 50,
|
23
|
-
args[:width] || 500, args[:height] || 500,
|
24
|
-
RubyGL::Native.OPENGL)
|
25
|
-
@context = RubyGL::Native.createContext(@window)
|
26
|
-
|
27
|
-
RubyGL::Native.makeCurrent(@window, @context)
|
28
|
-
RubyGL::Native.setSwapInterval(1)
|
29
|
-
end
|
30
|
-
|
31
|
-
def show_dialog(title, message)
|
32
|
-
RubyGL::Native.showSimpleMessageBox(0, title, message, @window)
|
33
|
-
end
|
34
|
-
|
35
|
-
def end_frame()
|
36
|
-
RubyGL::Native.swapWindow(@window)
|
37
|
-
|
38
|
-
RubyGL::Native.pumpEvents()
|
39
|
-
end
|
40
|
-
|
41
|
-
def teardown()
|
42
|
-
RubyGL::Native.deleteContext(@context)
|
43
|
-
RubyGL::Native.destroyWindow(@window)
|
44
|
-
|
45
|
-
RubyGL::Native.unloadLibrary()
|
46
|
-
RubyGL::Native.quitWindow()
|
47
|
-
RubyGL::Native.quitInput()
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
1
|
+
require_relative './native/glcontext'
|
2
|
+
require_relative './native/window'
|
3
|
+
|
4
|
+
module RubyGL
|
5
|
+
|
6
|
+
class DefaultSetup
|
7
|
+
# The args hash accepts position and size values to be applied to the window.
|
8
|
+
# :x, :y, :width, :height
|
9
|
+
def initialize(args = {})
|
10
|
+
RubyGL::Native.initWindow
|
11
|
+
RubyGL::Native.initInput
|
12
|
+
RubyGL::Native.loadLibrary(FFI::Pointer::NULL)
|
13
|
+
|
14
|
+
RubyGL::Native.setAttribute(:context_major_version, 4)
|
15
|
+
RubyGL::Native.setAttribute(:context_minor_version, 2)
|
16
|
+
RubyGL::Native.setAttribute(:context_profile_mask, RubyGL::Native.CONTEXT_PROFILE_COMPATIBILITY)
|
17
|
+
|
18
|
+
RubyGL::Native.setAttribute(:depth_size, 24)
|
19
|
+
RubyGL::Native.setAttribute(:doublebuffer, 1)
|
20
|
+
|
21
|
+
@window = RubyGL::Native.createWindow("RubyGL Window",
|
22
|
+
args[:x] || 50, args[:y] || 50,
|
23
|
+
args[:width] || 500, args[:height] || 500,
|
24
|
+
RubyGL::Native.OPENGL)
|
25
|
+
@context = RubyGL::Native.createContext(@window)
|
26
|
+
|
27
|
+
RubyGL::Native.makeCurrent(@window, @context)
|
28
|
+
RubyGL::Native.setSwapInterval(1)
|
29
|
+
end
|
30
|
+
|
31
|
+
def show_dialog(title, message)
|
32
|
+
RubyGL::Native.showSimpleMessageBox(0, title, message, @window)
|
33
|
+
end
|
34
|
+
|
35
|
+
def end_frame()
|
36
|
+
RubyGL::Native.swapWindow(@window)
|
37
|
+
|
38
|
+
RubyGL::Native.pumpEvents()
|
39
|
+
end
|
40
|
+
|
41
|
+
def teardown()
|
42
|
+
RubyGL::Native.deleteContext(@context)
|
43
|
+
RubyGL::Native.destroyWindow(@window)
|
44
|
+
|
45
|
+
RubyGL::Native.unloadLibrary()
|
46
|
+
RubyGL::Native.quitWindow()
|
47
|
+
RubyGL::Native.quitInput()
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
51
|
end
|