93 lines
2.8 KiB
HTML
93 lines
2.8 KiB
HTML
<!DOCTYPE html>
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<script id='2d-vertex-shader' type='x-shader/x-vertex'>#version 300 es
|
|
precision mediump float;
|
|
in vec4 a_position;
|
|
struct S
|
|
{
|
|
mat3x4 m;
|
|
};
|
|
out S matrix;
|
|
out vec3 vector;
|
|
|
|
void main()
|
|
{
|
|
matrix.m = mat3x4(1.0);
|
|
vector = vec3(1.0);
|
|
gl_Position = a_position;
|
|
}
|
|
</script>
|
|
<script id='2d-fragment-shader' type='x-shader/x-fragment'>#version 300 es
|
|
precision mediump float;
|
|
uniform vec3 uCol;
|
|
out vec4 col;
|
|
void main(){
|
|
col = vec4(uCol,1.);
|
|
}
|
|
</script>
|
|
<script>
|
|
function createShader(gl, sourceCode, type, type_str) {
|
|
var shader = gl.createShader(type);
|
|
gl.shaderSource(shader, sourceCode);
|
|
gl.compileShader(shader);
|
|
|
|
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
|
|
var info = gl.getShaderInfoLog(shader);
|
|
console.log(info);
|
|
}
|
|
|
|
return shader;
|
|
}
|
|
|
|
function createProgram(gl, vertexShader, fragmentShader) {
|
|
var program = gl.createProgram();
|
|
gl.attachShader(program, vertexShader);
|
|
gl.attachShader(program, fragmentShader);
|
|
transform_outs = ["vector"];
|
|
transform_feed = gl.createTransformFeedback();
|
|
gl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK,transform_feed);
|
|
gl.transformFeedbackVaryings(program,transform_outs,gl.INTERLEAVED_ATTRIBS);
|
|
gl.linkProgram(program);
|
|
active_info = gl.getTransformFeedbackVarying(program,0);
|
|
gl.useProgram(program);
|
|
|
|
if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
|
|
var info = gl.getProgramInfoLog(program);
|
|
console.log(info);
|
|
}
|
|
return program
|
|
}
|
|
|
|
if (window.testRunner) {
|
|
testRunner.dumpAsText();
|
|
testRunner.waitUntilDone();
|
|
}
|
|
|
|
function runTest() {
|
|
var canvas = document.createElement("canvas");
|
|
canvas.width = "640";
|
|
canvas.height = "480"
|
|
canvas.style.border = "thick solid #00FFFF";
|
|
var webgl_1 = canvas.getContext("webgl2");
|
|
document.body.append(canvas)
|
|
|
|
var schader_script_3 = document.getElementById('2d-vertex-shader');
|
|
var shader_source_3 = schader_script_3.text;
|
|
var schader_script_4 = document.getElementById('2d-fragment-shader');
|
|
var shader_source_4 = schader_script_4.text;
|
|
|
|
var vertexShader = createShader(webgl_1, shader_source_3, webgl_1.VERTEX_SHADER,"VERTEX_SHADER")
|
|
var fragmentShader = createShader(webgl_1, shader_source_4, webgl_1.FRAGMENT_SHADER,"FRAGMENT_SHADER")
|
|
createProgram(webgl_1, vertexShader, fragmentShader)
|
|
|
|
if (window.testRunner)
|
|
testRunner.notifyDone();
|
|
}
|
|
</script>
|
|
</head>
|
|
<body onload="runTest()">
|
|
<div>PASS. You didn't crash.</div>
|
|
</body>
|
|
</html>
|