86 lines
1.9 KiB
Text
86 lines
1.9 KiB
Text
/* OpenGL.wren */
|
|
|
|
var GL_COLOR_BUFFER_BIT = 0x4000
|
|
var GL_DEPTH_BUFFER_BIT = 0x0100
|
|
|
|
var GL_SMOOTH = 0x1d01
|
|
var GL_MODELVIEW = 0x1700
|
|
var GL_PROJECTION = 0x1701
|
|
|
|
var GL_TRIANGLES = 0x0004
|
|
|
|
var GLUT_ACTION_ON_WINDOW_CLOSE = 0x01f9
|
|
var GLUT_ACTION_GLUTMAINLOOP_RETURNS = 0x0001
|
|
|
|
class GL {
|
|
foreign static clearColor(red, green, blue, alpha)
|
|
|
|
foreign static clear(mask)
|
|
|
|
foreign static shadeModel(mode)
|
|
|
|
foreign static loadIdentity()
|
|
|
|
foreign static translatef(x, y, z)
|
|
|
|
foreign static begin(mode)
|
|
|
|
foreign static color3f(red, green, blue)
|
|
|
|
foreign static vertex2f(x, y)
|
|
|
|
foreign static end()
|
|
|
|
foreign static flush()
|
|
|
|
foreign static viewport(x, y, width, height)
|
|
|
|
foreign static matrixMode(mode)
|
|
|
|
foreign static ortho(left, right, bottom, top, nearVal, farVal)
|
|
}
|
|
|
|
class Glut {
|
|
foreign static initWindowSize(width, height)
|
|
|
|
foreign static createWindow(name)
|
|
|
|
foreign static displayFunc(clazz, signature)
|
|
|
|
foreign static reshapeFunc(clazz, signature)
|
|
|
|
foreign static setOption(eWhat, value)
|
|
}
|
|
|
|
class GLCallbacks {
|
|
static paint() {
|
|
GL.clearColor(0.3, 0.3, 0.3, 0)
|
|
GL.clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
|
|
GL.shadeModel(GL_SMOOTH)
|
|
GL.loadIdentity()
|
|
GL.translatef(-15, -15, 0)
|
|
GL.begin(GL_TRIANGLES)
|
|
GL.color3f(1, 0, 0)
|
|
GL.vertex2f(0, 0)
|
|
GL.color3f(0, 1, 0)
|
|
GL.vertex2f(30, 0)
|
|
GL.color3f(0, 0, 1)
|
|
GL.vertex2f(0, 30)
|
|
GL.end()
|
|
GL.flush()
|
|
}
|
|
|
|
static reshape(width, height) {
|
|
GL.viewport(0, 0, width, height)
|
|
GL.matrixMode(GL_PROJECTION)
|
|
GL.loadIdentity()
|
|
GL.ortho(-30, 30, -30, 30, -30, 30)
|
|
GL.matrixMode(GL_MODELVIEW)
|
|
}
|
|
}
|
|
|
|
Glut.initWindowSize(640, 480)
|
|
Glut.createWindow("Triangle")
|
|
Glut.displayFunc("GLCallbacks", "paint()")
|
|
Glut.reshapeFunc("GLCallbacks", "reshape(_,_)")
|
|
Glut.setOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_GLUTMAINLOOP_RETURNS)
|