|
<!DOCTYPE html> |
|
<html> |
|
<head> |
|
<title>Three.js GPU Detector</title> |
|
<meta charset="utf-8"> |
|
<meta name="viewport" content="width=device-width, initial-scale=1"> |
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.min.js"></script> |
|
<style> |
|
body { |
|
margin: 0; |
|
padding: 0; |
|
} |
|
canvas { |
|
width: 100%; |
|
height: 100%; |
|
} |
|
.info { |
|
position: absolute; |
|
top: 10px; |
|
left: 10px; |
|
color: #fff; |
|
} |
|
</style> |
|
</head> |
|
<body> |
|
<div class="info"></div> |
|
<script> |
|
|
|
var renderer = new THREE.WebGLRenderer({ antialias: true }); |
|
renderer.setSize(window.innerWidth, window.innerHeight); |
|
document.body.appendChild(renderer.domElement); |
|
|
|
|
|
var scene = new THREE.Scene(); |
|
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); |
|
camera.position.z = 5; |
|
|
|
|
|
var geometry = new THREE.BoxGeometry(); |
|
var material = new THREE.MeshBasicMaterial(); |
|
var cube = new THREE.Mesh(geometry, material); |
|
scene.add(cube); |
|
|
|
|
|
var raycaster = new THREE.Raycaster(); |
|
var mouse = new THREE.Vector2(); |
|
var intersects = []; |
|
|
|
|
|
var gl = renderer.getContext(); |
|
var extension = gl.getExtension('WEBGL_debug_renderer_info'); |
|
var memory = gl.getParameter(gl.MAX_TEXTURE_SIZE); |
|
var type = gl.getParameter(extension.UNMASKED_RENDERER_WEBGL); |
|
|
|
|
|
var info = document.querySelector('.info'); |
|
info.innerHTML = 'GPU Memory: ' + memory + '<br>GPU Type: ' + type; |
|
|
|
|
|
var stats = new Stats(); |
|
stats.domElement.style.position = 'absolute'; |
|
stats.domElement.style.top = '10px'; |
|
stats.domElement.style.right = '10px'; |
|
document.body.appendChild(stats.domElement); |
|
|
|
|
|
function render() { |
|
requestAnimationFrame(render); |
|
cube.rotation.x += 0.01; |
|
cube.rotation.y += 0.01; |
|
|
|
|
|
raycaster.setFromCamera(mouse, camera); |
|
intersects = raycaster.intersectObjects(scene.children); |
|
if (intersects.length > 0) { |
|
intersects[0].object.material.color.set(0xff0000); |
|
} else { |
|
cube.material.color.set(0x00ff00); |
|
} |
|
|
|
renderer.render(scene, camera); |
|
|
|
|
|
stats.update(); |
|
} |
|
render(); |
|
|
|
|
|
function onDocumentMouseMove(event) { |
|
event.preventDefault(); |
|
mouse.x = (event.clientX / window.innerWidth) * 2 - 1; |
|
mouse.y = -(event.clientY / window.innerHeight) * 2 + 1; |
|
} |
|
document.addEventListener('mousemove', onDocumentMouseMove, false); |
|
</script> |
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/stats.js/r16/Stats.min.js"></script> |
|
</body> |
|
</html> |
|
|