Created
February 17, 2016 12:18
-
-
Save Bambofy/68556eeff8146ef50dfb to your computer and use it in GitHub Desktop.
initial testing for dragongl.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<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