<!-- | |
/* | |
** Copyright (c) 2014 The Khronos Group Inc. | |
** | |
** Permission is hereby granted, free of charge, to any person obtaining a | |
** copy of this software and/or associated documentation files (the | |
** "Materials"), to deal in the Materials without restriction, including | |
** without limitation the rights to use, copy, modify, merge, publish, | |
** distribute, sublicense, and/or sell copies of the Materials, and to | |
** permit persons to whom the Materials are furnished to do so, subject to | |
** the following conditions: | |
** | |
** The above copyright notice and this permission notice shall be included | |
** in all copies or substantial portions of the Materials. | |
** | |
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. | |
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY | |
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | |
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | |
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. | |
*/ | |
--> | |
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<title>WebGL ActiveTexture BindTexture conformance test.</title> | |
<link rel="stylesheet" href="../../resources/js-test-style.css"/> | |
<script src="../../resources/js-test-pre.js"></script> | |
<script src="../resources/webgl-test-utils.js"></script> | |
</head> | |
<body> | |
<canvas id="example" width="2" height="2" style="width: 40px; height: 40px;"></canvas> | |
<canvas id="canvas2d" width="1" height="1" style="width: 40px; height: 40px;"></canvas> | |
<div id="description"></div> | |
<div id="console"></div> | |
<script id="vshader" type="x-shader/x-vertex"> | |
attribute vec3 vPosition; | |
attribute vec2 texCoord0; | |
varying vec2 texCoord; | |
void main() | |
{ | |
gl_Position = vec4(vPosition, 1); | |
texCoord = texCoord0; | |
} | |
</script> | |
<script id="fshader" type="x-shader/x-fragment"> | |
precision mediump float; | |
varying vec2 texCoord; | |
uniform sampler2D tex2D; | |
uniform samplerCube texCube; | |
void main() | |
{ | |
gl_FragColor = texture2D(tex2D, texCoord); | |
gl_FragColor += textureCube(texCube, vec3(texCoord, 0)); | |
} | |
</script> | |
<script> | |
"use strict"; | |
var gl; | |
function init() | |
{ | |
description( | |
"Tests drawing with two textures of different type. " + | |
"This test covers an ANGLE validation bug. See http://crbug.com/390412."); | |
var canvas2d = document.getElementById("canvas2d"); | |
var ctx2d = canvas2d.getContext("2d"); | |
var wtu = WebGLTestUtils; | |
gl = wtu.create3DContext("example"); | |
var program = wtu.setupProgram( | |
gl, | |
["vshader", "fshader"], | |
['vPosition', 'texCoord0']); | |
wtu.setupUnitQuad(gl); | |
gl.disable(gl.DEPTH_TEST); | |
gl.disable(gl.BLEND); | |
wtu.glErrorShouldBe(gl, gl.NO_ERROR); | |
var texture2D = gl.createTexture(); | |
gl.activeTexture(gl.TEXTURE0); | |
gl.bindTexture(gl.TEXTURE_2D, texture2D); | |
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, null); | |
wtu.glErrorShouldBe(gl, gl.NO_ERROR); | |
var textureCube = gl.createTexture(); | |
gl.activeTexture(gl.TEXTURE1); | |
gl.bindTexture(gl.TEXTURE_CUBE_MAP, textureCube); | |
gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, null); | |
gl.texImage2D(gl.TEXTURE_CUBE_MAP_NEGATIVE_X, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, null); | |
gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_Y, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, null); | |
gl.texImage2D(gl.TEXTURE_CUBE_MAP_NEGATIVE_Y, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, null); | |
gl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_Z, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, null); | |
gl.texImage2D(gl.TEXTURE_CUBE_MAP_NEGATIVE_Z, 0, gl.RGBA, 1, 1, 0, gl.RGBA, gl.UNSIGNED_BYTE, null); | |
wtu.glErrorShouldBe(gl, gl.NO_ERROR); | |
var texture2DLoc = gl.getUniformLocation(program, "tex2D"); | |
var textureCubeLoc = gl.getUniformLocation(program, "texCube"); | |
wtu.glErrorShouldBe(gl, gl.NO_ERROR); | |
gl.clearColor(1,0,0,1); | |
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); | |
gl.uniform1i(texture2DLoc, 0); | |
gl.uniform1i(textureCubeLoc, 1); | |
gl.drawArrays(gl.TRIANGLES, 0, 6); | |
wtu.glErrorShouldBe(gl, gl.NO_ERROR); | |
} | |
init(); | |
var successfullyParsed = true; | |
</script> | |
<script src="../../resources/js-test-post.js"></script> | |
</body> | |
</html> | |