Skip to content

Instantly share code, notes, and snippets.

@RichardB01
Created February 26, 2016 16:53
Show Gist options
  • Save RichardB01/38e1e04ef7fdd4de8b80 to your computer and use it in GitHub Desktop.
Save RichardB01/38e1e04ef7fdd4de8b80 to your computer and use it in GitHub Desktop.
<html>
<head>
</head>
<body>
<style>
html {
display:block;
}
</style>
<script type="text/javascript" src="js/dglBuffer.js"></script>
<script type="text/javascript" src="js/dglShader.js"></script>
<script type="text/javascript" src="js/dglShaderProgram.js"></script>
<script type="text/javascript" src="js/dglTexture.js"></script>
<script type="text/javascript" src="js/dglGraphics.js"></script>
<script src="js/gl-matrix.js"></script>
<script src="js/lua.vm.js"></script>
<script type="text/lua">
-------------
-- Globals --
-------------
window = js.global
document = js.global.document
canvas = document:getElementById("canvasWindow")
canvas.width = 800
canvas.height = 600
gl = canvas:getContext("experimental-webgl")
if not gl then
error("Could not create context for webgl")
else
print("Created webgl context.")
end
--
FLOAT = 4
--------------
-- Includes --
--------------
class = require("Libraries.middleclass")
require("Libraries.texturehandler")
require("Libraries.graphics")
-------------
-- SHADERS --
-------------
local vertexSource = [[
precision mediump float;
attribute vec2 vVertex;
attribute vec2 vTexcoord;
uniform mat4 uProj;
uniform mat4 uView;
uniform mat4 uModel;
varying vec2 Texcoord;
void main(void)
{
Texcoord = vTexcoord;
gl_Position = uProj * uView * uModel * vec4(vVertex, 0.0, 1.0);
}
]]
local fragmentSource = [[
precision mediump float;
varying vec2 Texcoord;
uniform sampler2D uSampler;
void main(void)
{
vec4 texData = texture2D(uSampler, vec2(Texcoord.s, Texcoord.t));
gl_FragColor = texData;
}
]]
function load()
-- Setup shaders.
local vertexShader = js.new(window.Shader, gl, vertexSource, gl.VERTEX_SHADER)
local fragmentShader = js.new(window.Shader, gl, fragmentSource, gl.FRAGMENT_SHADER)
local shaders = js.new(window.Array, vertexShader, fragmentShader)
gl:clearColor(0.2,0.2,0.2,1.0)
gl:enable(gl.BLEND);
gl:blendEquation( gl.FUNC_ADD )
gl:blendFunc( gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA )
ShaderProgram = js.new(window.Program, gl)
ShaderProgram:Link(shaders)
ShaderProgram:Use()
local proj = window.mat4:create()
window.mat4:ortho(proj, -canvas.width/2, canvas.width/2, canvas.height/2, -canvas.height/2, 0.0, 1.0)
local uProjLocation = ShaderProgram:GetUniform("uProj")
gl:uniformMatrix4fv(uProjLocation, false, proj)
local model = window.mat4:create()
local vec = window.vec3:create()
window.vec3:set(vec, -0.5, -0.5, 0)
window.mat4:translate(model, model, vec)
local uModelLocation = ShaderProgram:GetUniform("uModel");
gl:uniformMatrix4fv(uModelLocation, false, model)
ShaderProgram:Release()
gl:viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
end
function update()
end
function render()
gl:clear(gl.COLOR_BUFFER_BIT)
ShaderProgram:Use()
Graphics.TexturedQuad("Assets/axe.png", { 0, 0 }, { 1, 1 }, 0)
Graphics.AnimatedQuad("Assets/die", 30, 6, { 64, 0 }, { 1, 1 }, 0)
ShaderProgram:Release()
end
window.onmousedown = function(e)
end
window.onmouseup = function(e)
end
function loop()
update()
render()
window:requestAnimationFrame(loop)
end
load()
loop()
</script>
<canvas id="canvasWindow">
Browser is not supported...
</canvas>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment