mirror of
https://git.mirrors.martin98.com/https://github.com/google/draco
synced 2025-06-04 11:25:44 +08:00
116 lines
3.1 KiB
HTML
116 lines
3.1 KiB
HTML
<html>
|
|
<head>
|
|
<title>Draco Javascript Decode Timing</title>
|
|
|
|
<script type="text/javascript" src="draco_decoder.js"> </script>
|
|
|
|
<script type="text/javascript">
|
|
|
|
// String to hold table output.
|
|
var dt = '';
|
|
|
|
function startTable() {
|
|
dt += '<table><tr>';
|
|
dt += '<td>Filename</td>';
|
|
dt += '<td>Total milli</td>';
|
|
dt += '<td>Decode milli</td>';
|
|
dt += '<td>Size bytes</td>';
|
|
dt += '<td>Num Faces</td>';
|
|
}
|
|
|
|
function addCell(str, newRow) {
|
|
if (newRow)
|
|
dt += '</tr><tr>';
|
|
dt += '<td>' + str + '</td>';
|
|
}
|
|
|
|
function finishTable() {
|
|
dt += '</table>';
|
|
document.getElementById('tableOutput').innerHTML = dt;
|
|
}
|
|
|
|
function onDecodeClick() {
|
|
startTable();
|
|
var inputs = document.getElementById('u').value.split(',');
|
|
s_log('Decoding ' + inputs.length + ' files...', true, true);
|
|
TestMeshDecodingAsync(inputs, 0);
|
|
}
|
|
|
|
function onDecodeMultipleClick() {
|
|
startTable();
|
|
var inputs = document.getElementById('u').value.split(',');
|
|
var decode_count = parseInt(document.getElementById('decode_count').value);
|
|
s_log('Decoding ' + (decode_count * inputs.length) + ' files...', true, true);
|
|
|
|
var fileList = [];
|
|
for (var i = 0; i < decode_count; ++i) {
|
|
fileList = fileList.concat(inputs);
|
|
}
|
|
TestMeshDecodingAsync(fileList, 0);
|
|
}
|
|
|
|
function TestMeshDecodingAsync(filenameList, index) {
|
|
var xhr = new XMLHttpRequest();
|
|
xhr.open("GET", filenameList[index], true);
|
|
xhr.responseType = "arraybuffer";
|
|
|
|
xhr.onload = function(event) {
|
|
var arrayBuffer = xhr.response;
|
|
if (arrayBuffer) {
|
|
var byteArray = new Uint8Array(arrayBuffer);
|
|
|
|
var total_t0 = performance.now();
|
|
|
|
var buffer = new Module.DecoderBuffer();
|
|
buffer.Init(byteArray, byteArray.length);
|
|
|
|
var wrapper = new Module.WebIDLWrapper();
|
|
|
|
var decode_t0 = performance.now();
|
|
var mesh = wrapper.DecodeMeshFromBuffer(buffer);
|
|
var t1 = performance.now();
|
|
|
|
addCell(filenameList[index], true);
|
|
addCell('' + (t1 - total_t0), false);
|
|
addCell('' + (t1 - decode_t0), false);
|
|
addCell('' + byteArray.length, false);
|
|
addCell('' + mesh.num_faces(), false);
|
|
|
|
destroy(mesh);
|
|
destroy(wrapper);
|
|
destroy(buffer);
|
|
|
|
if (index < filenameList.length - 1) {
|
|
index = index + 1;
|
|
TestMeshDecodingAsync(filenameList, index);
|
|
} else {
|
|
finishTable();
|
|
}
|
|
}
|
|
};
|
|
|
|
xhr.send(null);
|
|
}
|
|
|
|
function s_log(str, end_line, reset) {
|
|
if (reset)
|
|
document.getElementById('status').innerHTML = '';
|
|
document.getElementById('status').innerHTML += str;
|
|
if (end_line)
|
|
document.getElementById('status').innerHTML += "<br/>";
|
|
}
|
|
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<H1>Draco Javascript Decode Timing</H1>
|
|
Draco file to be decoded. If more than one file, add as comma separated list. E.g. "file1.drc,file2.drc,file3.drc"</br>
|
|
<input id="u" type="text" size="80" value="input.drc"/><input type="button" value="Decode" onClick="onDecodeClick();">
|
|
<input id="decode_count" type="text" size="10" value="10"/><input type="button" value="Decode Multiple" onClick="onDecodeMultipleClick();">
|
|
<br/>
|
|
<div id="status"> </div></br>
|
|
<div id="tableOutput"> </div>
|
|
</body>
|
|
</html>
|
|
|