#
# Copyright (C) 2007 Jan Dvorak
#
# This program is distributed under the terms of the MIT license.
# See the included MIT-LICENSE file for the terms of this license.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#
if __FILE__ == $0
# If we are being called from the command line, e.g., ruby foo.rb, then
# fixup the load path so we can find the OpenGL extension libs
$: << File.join(File.dirname(__FILE__), '..', 'lib')
end
require 'test/unit'
require 'gl'
require 'glut'
require 'matrix'
include Gl
include Glut
Gl.enable_error_checking
$window_size = 512
def glut_init()
display_func = lambda do
raise
end
glutInit
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA | GLUT_STENCIL | GLUT_ACCUM | GLUT_ALPHA)
glutInitWindowPosition(1, 1)
glutInitWindowSize($window_size, $window_size)
glutCreateWindow("test")
# hack the need to call glutMainLoop on some implementations
glutDisplayFunc(display_func)
begin
glutMainLoop()
rescue
# continue
end
end
def approx_equal(a,b,epsilon=0.01)
(0...a.size).each do |i|
if ((a[i] - b[i]).abs > epsilon)
return false
end
end
true
end
def common_setup
if $glut_initialized == nil
glut_init()
$glut_initialized = true
end
glPushAttrib(GL_ALL_ATTRIB_BITS)
glPushClientAttrib(GL_CLIENT_ALL_ATTRIB_BITS)
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glClearColor(0,0,0,0)
glClear(GL_COLOR_BUFFER_BIT)
end
def common_teardown
glPopAttrib()
glPopClientAttrib()
glRenderMode(GL_RENDER)
# in case there is an GL error that escaped error checking routines ...
error = glGetError()
p gluErrorString(error) if (error!=0)
assert_equal(error,0)
end
def supported?(funcs)
Array(funcs).each do |name| # convert to array if it isn't already
if !Gl.is_available?(name)
puts ""
print "#{name} not supported, test skipped"
return false
end
end
return true
end