rubysdl-mswin32-1.9 2.1.0
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/NEWS.en +280 -0
- data/NEWS.ja +291 -0
- data/README.en +118 -0
- data/README.en.win32 +77 -0
- data/README.ja +166 -0
- data/README.ja.win32 +80 -0
- data/dll/SDL.dll +0 -0
- data/dll/SDL_image.dll +0 -0
- data/dll/SDL_mixer.dll +0 -0
- data/dll/SDL_ttf.dll +0 -0
- data/dll/SGE.dll +0 -0
- data/dll/jpeg.dll +0 -0
- data/dll/libcharset-1.dll +0 -0
- data/dll/libfreetype-6.dll +0 -0
- data/dll/libiconv-2.dll +0 -0
- data/dll/libogg-0.dll +0 -0
- data/dll/libpng12-0.dll +0 -0
- data/dll/libtiff-3.dll +0 -0
- data/dll/libvorbis-0.dll +0 -0
- data/dll/libvorbisfile-3.dll +0 -0
- data/dll/smpeg.dll +0 -0
- data/dll/zlib1.dll +0 -0
- data/doc/cdrom.rd +305 -0
- data/doc/collision.rd +121 -0
- data/doc/event.rd +1090 -0
- data/doc/font.rd +625 -0
- data/doc/general.rd +60 -0
- data/doc/init.rd +142 -0
- data/doc/joystick.rd +301 -0
- data/doc/mixer.rd +584 -0
- data/doc/mpeg.rd +420 -0
- data/doc/opengl.rd +144 -0
- data/doc/rsd.rb +158 -0
- data/doc/sdlskk.rd +404 -0
- data/doc/time.rd +34 -0
- data/doc/video.rd +2269 -0
- data/doc/wm.rd +78 -0
- data/ext/opengl.so +0 -0
- data/ext/sdl.so +0 -0
- data/install_rubysdl.rb +30 -0
- data/lib/rubysdl_aliases.rb +303 -0
- data/lib/rubysdl_compatible_ver1.rb +243 -0
- data/lib/sdl.rb +224 -0
- data/rubysdl_doc_old.en.rd +2181 -0
- data/rubysdl_doc_old.rd +2402 -0
- data/rubysdl_ref.html +5888 -0
- data/rubysdl_ref.rd +6577 -0
- data/sample/aadraw.rb +24 -0
- data/sample/alpha.rb +26 -0
- data/sample/alphadraw.rb +25 -0
- data/sample/bfont.rb +24 -0
- data/sample/caption.rb +21 -0
- data/sample/cdrom.rb +24 -0
- data/sample/collision.rb +97 -0
- data/sample/cursor.bmp +0 -0
- data/sample/cursor.rb +22 -0
- data/sample/ellipses.rb +39 -0
- data/sample/event2.rb +34 -0
- data/sample/font.bmp +0 -0
- data/sample/font.rb +26 -0
- data/sample/fpstimer.rb +175 -0
- data/sample/icon.bmp +0 -0
- data/sample/icon.bmp.gz +0 -0
- data/sample/icon.png +0 -0
- data/sample/joy2.rb +81 -0
- data/sample/kanji.rb +36 -0
- data/sample/load_from_io.rb +45 -0
- data/sample/movesp.rb +94 -0
- data/sample/playmod.rb +13 -0
- data/sample/plaympeg.rb +44 -0
- data/sample/playwave.rb +15 -0
- data/sample/randrect.rb +40 -0
- data/sample/sample.ttf +0 -0
- data/sample/sdl.rb +33 -0
- data/sample/sdlskk.rb +70 -0
- data/sample/sgetest.rb +33 -0
- data/sample/stetris.rb +274 -0
- data/sample/testgl.rb +165 -0
- data/sample/testsprite.rb +69 -0
- data/sample/transformblit.rb +42 -0
- metadata +134 -0
data/sample/sgetest.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'sdl'
|
2
|
+
|
3
|
+
SDL.init( SDL::INIT_VIDEO )
|
4
|
+
screen = SDL::Screen.open(640,480,16,SDL::SWSURFACE)
|
5
|
+
SDL::WM.set_caption $0, $0
|
6
|
+
|
7
|
+
format = screen.format
|
8
|
+
# draw red pixel at (200,200)
|
9
|
+
screen[200,200]= format.map_rgb(255,0,0)
|
10
|
+
# draw green pixel at (250,200)
|
11
|
+
screen[250,200]= format.map_rgb(0,255,0)
|
12
|
+
# draw blue pixel at (200,200)
|
13
|
+
screen[300,200]= format.map_rgb(0,0,255)
|
14
|
+
|
15
|
+
Red=format.map_rgb(255,0,0)
|
16
|
+
screen.draw_line(20,20,300,200,Red)
|
17
|
+
screen.draw_rect(49,59,80,80,Red)
|
18
|
+
screen.draw_circle(100,100,50,[87,87,87])
|
19
|
+
screen.draw_circle(300,300,30,Red, true)
|
20
|
+
screen.draw_circle(230, 300, 30, Red, true, true)
|
21
|
+
|
22
|
+
screen.flip
|
23
|
+
|
24
|
+
while true
|
25
|
+
while event = SDL::Event.poll
|
26
|
+
case event
|
27
|
+
when SDL::Event::KeyDown, SDL::Event::Quit
|
28
|
+
exit
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
sleep 0.2
|
33
|
+
end
|
data/sample/stetris.rb
ADDED
@@ -0,0 +1,274 @@
|
|
1
|
+
# This sample need ruby 1.8 or 1.6 with shim
|
2
|
+
# Thanks to Simon Strandgaard
|
3
|
+
require 'sdl'
|
4
|
+
if RUBY_VERSION < "1.7" then
|
5
|
+
require 'features/ruby18'
|
6
|
+
end
|
7
|
+
|
8
|
+
class Object
|
9
|
+
def deep_clone
|
10
|
+
Marshal::load(Marshal.dump(self))
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
class Array
|
15
|
+
def random
|
16
|
+
at(Kernel.rand(size))
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
class Pattern
|
21
|
+
def initialize(x, y, *data)
|
22
|
+
@x = x
|
23
|
+
@y = y
|
24
|
+
@data = data
|
25
|
+
end
|
26
|
+
attr_reader :data, :x, :y
|
27
|
+
alias width x
|
28
|
+
def rotate
|
29
|
+
@data = @data.reverse.transpose
|
30
|
+
@x, @y = @y, @x
|
31
|
+
end
|
32
|
+
PAT1 = Pattern.new(4, 1, [1, 1, 1, 1])
|
33
|
+
PAT2 = Pattern.new(3, 2, [1, 1, 1], [0, 1, 0])
|
34
|
+
PAT3 = Pattern.new(3, 2, [1, 1, 1], [1, 0, 0])
|
35
|
+
PAT4 = Pattern.new(3, 2, [1, 1, 1], [0, 0, 1])
|
36
|
+
PAT5 = Pattern.new(2, 2, [1, 1], [1, 1])
|
37
|
+
PAT6 = Pattern.new(3, 2, [1, 1, 0], [0, 1, 1])
|
38
|
+
PAT7 = Pattern.new(3, 2, [0, 1, 1], [1, 1, 0])
|
39
|
+
def Pattern::patterns
|
40
|
+
[PAT1, PAT2, PAT3, PAT4, PAT5, PAT6, PAT7]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
class Level
|
45
|
+
def initialize(width=10, height=15)
|
46
|
+
@height = height
|
47
|
+
@width = width
|
48
|
+
@data = Array.new(height) { Array.new(width, 0) }
|
49
|
+
backup_background
|
50
|
+
end
|
51
|
+
attr_reader :width, :height
|
52
|
+
def test
|
53
|
+
@data[0][0] = 1
|
54
|
+
@data[0][@width-1] = 1
|
55
|
+
@data[@height-1][0] = 1
|
56
|
+
@data[@height-1][@width-1] = 1
|
57
|
+
end
|
58
|
+
def bg_is_collision(offset_x, offset_y, pattern)
|
59
|
+
return true if pattern.x + offset_x > @width
|
60
|
+
return true if pattern.y + offset_y > @height
|
61
|
+
y = offset_y
|
62
|
+
pattern.data.each do |row|
|
63
|
+
x = offset_x
|
64
|
+
row.each do |cell|
|
65
|
+
if (cell != 0) and (@bg[y][x] != 0)
|
66
|
+
return true
|
67
|
+
end
|
68
|
+
x += 1
|
69
|
+
end
|
70
|
+
y += 1
|
71
|
+
end
|
72
|
+
return false
|
73
|
+
end
|
74
|
+
def restore_background
|
75
|
+
@data = @bg
|
76
|
+
end
|
77
|
+
def backup_background
|
78
|
+
@bg = @data.deep_clone
|
79
|
+
end
|
80
|
+
def or_pattern(offset_x, offset_y, pattern)
|
81
|
+
backup_background
|
82
|
+
y = offset_y
|
83
|
+
pattern.data.each do |row|
|
84
|
+
x = offset_x
|
85
|
+
row.each do |cell|
|
86
|
+
@data[y][x] = cell if cell != 0
|
87
|
+
x += 1
|
88
|
+
end
|
89
|
+
y += 1
|
90
|
+
end
|
91
|
+
end
|
92
|
+
def find_filled_rows
|
93
|
+
res = []
|
94
|
+
@data.each_index do |y|
|
95
|
+
ok = true
|
96
|
+
@data[y].each do |cell|
|
97
|
+
if cell == 0
|
98
|
+
ok = false
|
99
|
+
break
|
100
|
+
end
|
101
|
+
end
|
102
|
+
res << y if ok
|
103
|
+
end
|
104
|
+
res
|
105
|
+
end
|
106
|
+
def remove_rows(*rows)
|
107
|
+
rows.uniq!
|
108
|
+
rows.each do |y|
|
109
|
+
@bg[y] = nil
|
110
|
+
end
|
111
|
+
@bg.compact!
|
112
|
+
extra = Array.new(rows.size) { Array.new(@width, 0) }
|
113
|
+
@bg = extra + @bg
|
114
|
+
raise "integrity error" if @bg.size != @height
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
class Level
|
119
|
+
def load_render_data
|
120
|
+
@image = SDL::Surface.load_bmp("icon.bmp")
|
121
|
+
@image.set_color_key( SDL::SRCCOLORKEY ,0)
|
122
|
+
@image = @image.display_format
|
123
|
+
@step_x = 32 # todo: image width
|
124
|
+
@step_y = 32 # todo: image height
|
125
|
+
# todo: raise exception is level does not fit to screen!
|
126
|
+
@offset_x = 100
|
127
|
+
@offset_y = 20
|
128
|
+
|
129
|
+
@fill_removal_dir = false
|
130
|
+
end
|
131
|
+
def render
|
132
|
+
y = @offset_y
|
133
|
+
@data.each do |row|
|
134
|
+
render_line(y, row)
|
135
|
+
y += @step_y
|
136
|
+
end
|
137
|
+
end
|
138
|
+
def render_line(y, cells)
|
139
|
+
x = @offset_x
|
140
|
+
cells.each do |cell|
|
141
|
+
i = (cell == 0) ? 63 : 255
|
142
|
+
@image.set_alpha(SDL::SRCALPHA,i)
|
143
|
+
$screen.put(@image,x,y)
|
144
|
+
x += @step_x
|
145
|
+
end
|
146
|
+
end
|
147
|
+
FILL = (20 * 256*256) + (0 * 256) + 10
|
148
|
+
def render_removal(rows)
|
149
|
+
$screen.fill_rect(0,0,640,512,0)
|
150
|
+
render
|
151
|
+
rows.reverse_each do |row|
|
152
|
+
y = (row * @step_y) + @offset_y
|
153
|
+
|
154
|
+
if @fill_removal_dir
|
155
|
+
i = 0
|
156
|
+
x = @offset_x
|
157
|
+
while i < @width
|
158
|
+
$screen.fill_rect(x,y,@step_x,@step_y,FILL)
|
159
|
+
$screen.flip
|
160
|
+
i += 1
|
161
|
+
x += @step_x
|
162
|
+
end
|
163
|
+
@fill_removal_dir = false
|
164
|
+
else
|
165
|
+
i = 0
|
166
|
+
x = @offset_x + ((@width-1)*@step_x)
|
167
|
+
while i < @width
|
168
|
+
$screen.fill_rect(x,y,@step_x,@step_y,FILL)
|
169
|
+
$screen.flip
|
170
|
+
i += 1
|
171
|
+
x -= @step_x
|
172
|
+
end
|
173
|
+
@fill_removal_dir = true
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
SDL.init( SDL::INIT_VIDEO )
|
180
|
+
$screen = SDL::Screen.open(640,512,24,SDL::SWSURFACE)
|
181
|
+
level = Level.new
|
182
|
+
level.test
|
183
|
+
level.load_render_data
|
184
|
+
pat = Pattern::PAT3.clone
|
185
|
+
pat_x = 5
|
186
|
+
pat_y = 0
|
187
|
+
time_step = 0.5
|
188
|
+
time = Time.now
|
189
|
+
launch_new_pattern = true
|
190
|
+
loop do
|
191
|
+
if launch_new_pattern
|
192
|
+
launch_new_pattern = false
|
193
|
+
time_step = 0.5
|
194
|
+
time = Time.now
|
195
|
+
pat = Pattern::patterns.random.clone
|
196
|
+
pat_x = 5
|
197
|
+
pat_y = 0
|
198
|
+
level.backup_background
|
199
|
+
if level.bg_is_collision(pat_x, pat_y, pat)
|
200
|
+
puts "Sorry you are game over"
|
201
|
+
sleep 3
|
202
|
+
raise "game over"
|
203
|
+
end
|
204
|
+
level.or_pattern(pat_x, pat_y, pat)
|
205
|
+
end
|
206
|
+
|
207
|
+
# timer events
|
208
|
+
while Time.now > time + time_step
|
209
|
+
pat_y += 1
|
210
|
+
if level.bg_is_collision(pat_x, pat_y, pat)
|
211
|
+
launch_new_pattern = true
|
212
|
+
rows = level.find_filled_rows
|
213
|
+
if rows.size > 0
|
214
|
+
puts "rows filled"
|
215
|
+
p rows
|
216
|
+
level.render_removal(rows)
|
217
|
+
|
218
|
+
level.backup_background
|
219
|
+
level.remove_rows(*rows)
|
220
|
+
level.restore_background
|
221
|
+
end
|
222
|
+
else
|
223
|
+
level.restore_background
|
224
|
+
level.or_pattern(pat_x, pat_y, pat)
|
225
|
+
end
|
226
|
+
time += time_step
|
227
|
+
end
|
228
|
+
|
229
|
+
old_pat_x = pat_x
|
230
|
+
old_pat_y = pat_y
|
231
|
+
rotate = false
|
232
|
+
|
233
|
+
# handle keystrokes
|
234
|
+
while event = SDL::Event.poll
|
235
|
+
case event
|
236
|
+
when SDL::Event::Quit then exit
|
237
|
+
when SDL::Event::KeyDown
|
238
|
+
case event.sym
|
239
|
+
when SDL::Key::ESCAPE then exit
|
240
|
+
when SDL::Key::UP then rotate = true
|
241
|
+
when SDL::Key::DOWN then time_step = 0.1
|
242
|
+
when SDL::Key::LEFT
|
243
|
+
pat_x -= 1 if pat_x > 0
|
244
|
+
when SDL::Key::RIGHT
|
245
|
+
pat_x += 1 if pat_x < (level.width - pat.width)
|
246
|
+
end
|
247
|
+
end
|
248
|
+
end
|
249
|
+
SDL::Key.scan
|
250
|
+
|
251
|
+
# move pattern & do collition tests
|
252
|
+
if (pat_x <=> old_pat_x) or (pat_y <=> old_pat_y) or (rotate == true)
|
253
|
+
|
254
|
+
old_pat = pat.clone
|
255
|
+
pat.rotate if rotate
|
256
|
+
|
257
|
+
# if collision then restore last working-state
|
258
|
+
if level.bg_is_collision(pat_x, pat_y, pat)
|
259
|
+
pat_x = old_pat_x
|
260
|
+
pat_y = old_pat_y
|
261
|
+
pat = old_pat
|
262
|
+
else
|
263
|
+
# collision avoided.. therefore don't launch new pattern
|
264
|
+
launch_new_pattern = false
|
265
|
+
level.restore_background
|
266
|
+
level.or_pattern(pat_x, pat_y, pat)
|
267
|
+
end
|
268
|
+
end
|
269
|
+
|
270
|
+
# repaint screen
|
271
|
+
$screen.fill_rect(0,0,640,512,0)
|
272
|
+
level.render
|
273
|
+
$screen.flip
|
274
|
+
end
|
data/sample/testgl.rb
ADDED
@@ -0,0 +1,165 @@
|
|
1
|
+
require 'sdl'
|
2
|
+
require 'opengl'
|
3
|
+
|
4
|
+
# initialize SDL and opengl
|
5
|
+
SDL.init SDL::INIT_VIDEO
|
6
|
+
SDL::GL.set_attr SDL::GL_RED_SIZE,5
|
7
|
+
SDL::GL.set_attr SDL::GL_GREEN_SIZE,5
|
8
|
+
SDL::GL.set_attr SDL::GL_BLUE_SIZE,5
|
9
|
+
SDL::GL.set_attr SDL::GL_DEPTH_SIZE,16
|
10
|
+
SDL::GL.set_attr SDL::GL_DOUBLEBUFFER,1
|
11
|
+
SDL::Screen.open 640,400,16,SDL::OPENGL
|
12
|
+
|
13
|
+
GL::Viewport( 0, 0, 640, 400 );
|
14
|
+
GL::MatrixMode( GL::PROJECTION );
|
15
|
+
GL::LoadIdentity( );
|
16
|
+
|
17
|
+
GL::MatrixMode( GL::MODELVIEW );
|
18
|
+
GL::LoadIdentity( );
|
19
|
+
|
20
|
+
GL::Enable(GL::DEPTH_TEST);
|
21
|
+
|
22
|
+
GL::DepthFunc(GL::LESS);
|
23
|
+
|
24
|
+
GL::ShadeModel(GL::SMOOTH);
|
25
|
+
|
26
|
+
shadedCube=true
|
27
|
+
|
28
|
+
color =
|
29
|
+
[[ 1.0, 1.0, 0.0],
|
30
|
+
[ 1.0, 0.0, 0.0],
|
31
|
+
[ 0.0, 0.0, 0.0],
|
32
|
+
[ 0.0, 1.0, 0.0],
|
33
|
+
[ 0.0, 1.0, 1.0],
|
34
|
+
[ 1.0, 1.0, 1.0],
|
35
|
+
[ 1.0, 0.0, 1.0],
|
36
|
+
[ 0.0, 0.0, 1.0]]
|
37
|
+
|
38
|
+
cube =
|
39
|
+
[[ 0.5, 0.5, -0.5],
|
40
|
+
[ 0.5, -0.5, -0.5],
|
41
|
+
[-0.5, -0.5, -0.5],
|
42
|
+
[-0.5, 0.5, -0.5],
|
43
|
+
[-0.5, 0.5, 0.5],
|
44
|
+
[ 0.5, 0.5, 0.5],
|
45
|
+
[ 0.5, -0.5, 0.5],
|
46
|
+
[-0.5, -0.5, 0.5]]
|
47
|
+
|
48
|
+
|
49
|
+
loop do
|
50
|
+
|
51
|
+
while event = SDL::Event2.poll
|
52
|
+
case event
|
53
|
+
when SDL::Event2::Quit, SDL::Event2::KeyDown
|
54
|
+
exit
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
GL.ClearColor(0.0, 0.0, 0.0, 1.0);
|
59
|
+
GL.Clear(GL::COLOR_BUFFER_BIT|GL::DEPTH_BUFFER_BIT);
|
60
|
+
|
61
|
+
|
62
|
+
GL::Begin(GL::QUADS)
|
63
|
+
|
64
|
+
if shadedCube then
|
65
|
+
GL::Color(color[0]);
|
66
|
+
GL::Vertex(cube[0]);
|
67
|
+
GL::Color(color[1]);
|
68
|
+
GL::Vertex(cube[1]);
|
69
|
+
GL::Color(color[2]);
|
70
|
+
GL::Vertex(cube[2]);
|
71
|
+
GL::Color(color[3]);
|
72
|
+
GL::Vertex(cube[3]);
|
73
|
+
|
74
|
+
GL::Color(color[3]);
|
75
|
+
GL::Vertex(cube[3]);
|
76
|
+
GL::Color(color[4]);
|
77
|
+
GL::Vertex(cube[4]);
|
78
|
+
GL::Color(color[7]);
|
79
|
+
GL::Vertex(cube[7]);
|
80
|
+
GL::Color(color[2]);
|
81
|
+
GL::Vertex(cube[2]);
|
82
|
+
|
83
|
+
GL::Color(color[0]);
|
84
|
+
GL::Vertex(cube[0]);
|
85
|
+
GL::Color(color[5]);
|
86
|
+
GL::Vertex(cube[5]);
|
87
|
+
GL::Color(color[6]);
|
88
|
+
GL::Vertex(cube[6]);
|
89
|
+
GL::Color(color[1]);
|
90
|
+
GL::Vertex(cube[1]);
|
91
|
+
|
92
|
+
GL::Color(color[5]);
|
93
|
+
GL::Vertex(cube[5]);
|
94
|
+
GL::Color(color[4]);
|
95
|
+
GL::Vertex(cube[4]);
|
96
|
+
GL::Color(color[7]);
|
97
|
+
GL::Vertex(cube[7]);
|
98
|
+
GL::Color(color[6]);
|
99
|
+
GL::Vertex(cube[6]);
|
100
|
+
|
101
|
+
GL::Color(color[5]);
|
102
|
+
GL::Vertex(cube[5]);
|
103
|
+
GL::Color(color[0]);
|
104
|
+
GL::Vertex(cube[0]);
|
105
|
+
GL::Color(color[3]);
|
106
|
+
GL::Vertex(cube[3]);
|
107
|
+
GL::Color(color[4]);
|
108
|
+
GL::Vertex(cube[4]);
|
109
|
+
|
110
|
+
GL::Color(color[6]);
|
111
|
+
GL::Vertex(cube[6]);
|
112
|
+
GL::Color(color[1]);
|
113
|
+
GL::Vertex(cube[1]);
|
114
|
+
GL::Color(color[2]);
|
115
|
+
GL::Vertex(cube[2]);
|
116
|
+
GL::Color(color[7]);
|
117
|
+
GL::Vertex(cube[7]);
|
118
|
+
|
119
|
+
else
|
120
|
+
GL::Color(1.0, 0.0, 0.0);
|
121
|
+
GL::Vertex(cube[0]);
|
122
|
+
GL::Vertex(cube[1]);
|
123
|
+
GL::Vertex(cube[2]);
|
124
|
+
GL::Vertex(cube[3]);
|
125
|
+
|
126
|
+
GL::Color(0.0, 1.0, 0.0);
|
127
|
+
GL::Vertex(cube[3]);
|
128
|
+
GL::Vertex(cube[4]);
|
129
|
+
GL::Vertex(cube[7]);
|
130
|
+
GL::Vertex(cube[2]);
|
131
|
+
|
132
|
+
GL::Color(0.0, 0.0, 1.0);
|
133
|
+
GL::Vertex(cube[0]);
|
134
|
+
GL::Vertex(cube[5]);
|
135
|
+
GL::Vertex(cube[6]);
|
136
|
+
GL::Vertex(cube[1]);
|
137
|
+
|
138
|
+
GL::Color(0.0, 1.0, 1.0);
|
139
|
+
GL::Vertex(cube[5]);
|
140
|
+
GL::Vertex(cube[4]);
|
141
|
+
GL::Vertex(cube[7]);
|
142
|
+
GL::Vertex(cube[6]);
|
143
|
+
|
144
|
+
GL::Color(1.0, 1.0, 0.0);
|
145
|
+
GL::Vertex(cube[5]);
|
146
|
+
GL::Vertex(cube[0]);
|
147
|
+
GL::Vertex(cube[3]);
|
148
|
+
GL::Vertex(cube[4]);
|
149
|
+
|
150
|
+
GL::Color(1.0, 0.0, 1.0);
|
151
|
+
GL::Vertex(cube[6]);
|
152
|
+
GL::Vertex(cube[1]);
|
153
|
+
GL::Vertex(cube[2]);
|
154
|
+
GL::Vertex(cube[7]);
|
155
|
+
|
156
|
+
end
|
157
|
+
|
158
|
+
GL::End()
|
159
|
+
|
160
|
+
GL::MatrixMode(GL::MODELVIEW);
|
161
|
+
GL::Rotate(5.0, 1.0, 1.0, 1.0);
|
162
|
+
|
163
|
+
SDL::GL.swap_buffers
|
164
|
+
|
165
|
+
end
|