Skip to content

Instantly share code, notes, and snippets.

@Bambofy
Created February 17, 2016 12:18
Show Gist options
  • Save Bambofy/68556eeff8146ef50dfb to your computer and use it in GitHub Desktop.
Save Bambofy/68556eeff8146ef50dfb to your computer and use it in GitHub Desktop.
initial testing for dragongl.
<html>
<head>
<title>DragonGL</title>
<script type="x-shader/vertex" id="vs-glsl">
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);
}
</script>
<script type="x-shader/fragment" id="fs-glsl">
precision mediump float;
varying vec2 Texcoord;
uniform sampler2D uSampler;
void main(void) {
vec4 texData = texture2D(uSampler, vec2(Texcoord.s, Texcoord.t));
gl_FragColor = texData;
}
</script>
<script type="text/javascript" src="gl-matrix.js"></script>
<script type="text/javascript" src="dglBuffer.js"></script>
<script type="text/javascript" src="dglShader.js"></script>
<script type="text/javascript" src="dglShaderProgram.js"></script>
<script type="text/javascript" src="dglTexture.js"></script>
<script type="text/javascript" src="dglGraphics.js"></script>
<script type="text/javascript">
var shaderProgram;
var quadVbo;
var texture, texture2, textureVbo;
function Load()
{
gl.clearColor(0.0, 0.0, 0.5, 0.0);
// Get shaders sources from elements.
var vsSource = document.getElementById('vs-glsl').textContent;
var fsSource = document.getElementById('fs-glsl').textContent;
// Set shader source and compile two shaders.
var vertexShader = new Shader(vsSource, gl.VERTEX_SHADER);
var fragmentShader = new Shader(fsSource, gl.FRAGMENT_SHADER);
shaderProgram = new Program();
// Attach both shaders to a program, extract their attribute/uniform positions.
shaderProgram.Link([vertexShader, fragmentShader]);
var quadCoords = [
0.0, 1.0,
1.0, 1.0,
0.0, 0.0,
1.0, 1.0,
1.0, 0.0,
0.0, 0.0
];
var textureCoords =[
0.0, 1.0,
1.0, 1.0,
0.0, 0.0,
1.0, 1.0,
1.0, 0.0,
0.0, 0.0
];
// Create a position vbo
quadVbo = new Buffer();
quadVbo.Bind(gl.ARRAY_BUFFER);
quadVbo.BufferData(new Float32Array(quadCoords), gl.STATIC_DRAW);
quadVbo.Release();
texture = new Texture("test.jpg", gl.TEXTURE_2D);
texture2 = new Texture("test2.jpg", gl.TEXTURE_2D);
// Create a texcoord vbo
textureVbo = new Buffer();
textureVbo.Bind(gl.ARRAY_BUFFER);
textureVbo.BufferData(new Float32Array(textureCoords), gl.STATIC_DRAW);
textureVbo.Release();
}
function Update()
{
//DGL.DrawRectangle();
}
function Render()
{
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
shaderProgram.Use();
var uProj = mat4.create();
mat4.perspective(uProj, 1.5708, 3, 1, 20);
var uView = mat4.create();
var eyePos = vec3.create();
var targetPos = vec3.create();
var upVec = vec3.create();
vec3.set(eyePos, 0, 0, 10);
vec3.set(targetPos, 0, 0, 0);
vec3.set(upVec, 0, 1, 0);
mat4.lookAt(uView, eyePos, targetPos, upVec);
var uModel = mat4.create();
mat4.identity(uModel);
var scaleVec = vec3.create();
vec3.set(scaleVec, 25, 5, 1);
mat4.scale(uModel, uModel, scaleVec);
// push uniforms.
gl.uniformMatrix4fv(shaderProgram.GetUniform("uProj"), false, uProj);
gl.uniformMatrix4fv(shaderProgram.GetUniform("uView"), false, uView);
gl.uniformMatrix4fv(shaderProgram.GetUniform("uModel"), false, uModel);
// bind position data.
quadVbo.Bind(gl.ARRAY_BUFFER);
shaderProgram.EnableVertexAttribArray("vVertex", 2);
// bind texture.
var texUnit = texture.Bind();
gl.uniform1i(shaderProgram.GetAttribute("uSampler"), texUnit);
// bind texture coordinates.
textureVbo.Bind(gl.ARRAY_BUFFER);
shaderProgram.EnableVertexAttribArray("vTexcoord", 2);
gl.drawArrays(gl.TRIANGLES, 0, 6);
shaderProgram.DisableVertexAttribArray("vVertex");
shaderProgram.DisableVertexAttribArray("vTexcoord");
var transVec = vec3.create();
vec3.set(transVec, 0, 1, 0);
mat4.translate(uModel, uModel, transVec);
gl.uniformMatrix4fv(shaderProgram.GetUniform("uModel"), false, uModel);
// bind position data.
quadVbo.Bind(gl.ARRAY_BUFFER);
shaderProgram.EnableVertexAttribArray("vVertex", 2);
// bind texture.
var texUnit = texture2.Bind();
gl.uniform1i(shaderProgram.GetAttribute("uSampler"), texUnit);
// bind texture coordinates.
textureVbo.Bind(gl.ARRAY_BUFFER);
shaderProgram.EnableVertexAttribArray("vTexcoord", 2);
gl.drawArrays(gl.TRIANGLES, 0, 6);
shaderProgram.DisableVertexAttribArray("vVertex");
shaderProgram.DisableVertexAttribArray("vTexcoord");
texture.Release();
textureVbo.Release();
quadVbo.Release();
}
function Unload()
{
texture.Delete();
quadVbo.Delete();
shaderProgram.Delete();
}
</script>
<script type="text/javascript" src="dglWindowEvents.js"></script>
</head>
<body>
<canvas id="dglCanvas" width="800" height="600">Unsupported browser.</canvas>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment