mirror of
https://github.com/XProger/OpenLara.git
synced 2025-08-17 02:24:07 +02:00
#15 WebGL fix audio for iOS browsers
This commit is contained in:
@@ -66,15 +66,17 @@
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var audioContext = null;
|
||||||
|
|
||||||
function snd_init() {
|
function snd_init() {
|
||||||
var AudioContext = window.AudioContext || window.webkitAudioContext;
|
var AudioContext = window.AudioContext || window.webkitAudioContext;
|
||||||
if (!AudioContext) return;
|
if (!AudioContext) return;
|
||||||
var ctx = new (window.AudioContext || window.webkitAudioContext)();
|
audioContext = new (window.AudioContext || window.webkitAudioContext)();
|
||||||
var count = 2048;
|
var count = 2048;
|
||||||
var rate = 44100 / ctx.sampleRate;
|
var rate = 44100 / audioContext.sampleRate;
|
||||||
var framesCount = Math.ceil(count * rate);
|
var framesCount = Math.ceil(count * rate);
|
||||||
var frames = Module._malloc(framesCount * 4); // interleaved short L, R
|
var frames = Module._malloc(framesCount * 4); // interleaved short L, R
|
||||||
proc = ctx.createScriptProcessor(count, 2, 2);
|
proc = audioContext.createScriptProcessor(count, 2, 2);
|
||||||
proc.onaudioprocess = function(e) {
|
proc.onaudioprocess = function(e) {
|
||||||
var L = e.outputBuffer.getChannelData(0),
|
var L = e.outputBuffer.getChannelData(0),
|
||||||
R = e.outputBuffer.getChannelData(1);
|
R = e.outputBuffer.getChannelData(1);
|
||||||
@@ -85,9 +87,18 @@
|
|||||||
R[i] = Module.getValue(index + 2, 'i16') / 0x8000;
|
R[i] = Module.getValue(index + 2, 'i16') / 0x8000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
proc.connect(ctx.destination);
|
proc.connect(audioContext.destination);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// for iOS to unlock audio context after user interaction
|
||||||
|
var userAction = function() {
|
||||||
|
if (audioContext) {
|
||||||
|
audioContext.resume();
|
||||||
|
window.removeEventListener('touchstart', userAction, false);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
window.addEventListener('touchstart', userAction, false);
|
||||||
|
|
||||||
var gl = canvasElement.getContext("webgl", {antialias:false, premultipliedAlpha: false}) || canvasElement.getContext("experimental-webgl", {antialias:false, premultipliedAlpha: false});
|
var gl = canvasElement.getContext("webgl", {antialias:false, premultipliedAlpha: false}) || canvasElement.getContext("experimental-webgl", {antialias:false, premultipliedAlpha: false});
|
||||||
|
|
||||||
Module.setStatus('Downloading...');
|
Module.setStatus('Downloading...');
|
||||||
@@ -106,7 +117,7 @@
|
|||||||
<input type="button" value="Browse Level" onclick="document.getElementById('browseFile').click();" /> (.PHD, .PSX)
|
<input type="button" value="Browse Level" onclick="document.getElementById('browseFile').click();" /> (.PHD, .PSX)
|
||||||
<p style="margin:8px">
|
<p style="margin:8px">
|
||||||
OpenLara on <a target="_blank" href="https://github.com/XProger/OpenLara">github</a> & <a target="_blank" href="https://www.facebook.com/OpenLaraTR">facebook</a><br>
|
OpenLara on <a target="_blank" href="https://github.com/XProger/OpenLara">github</a> & <a target="_blank" href="https://www.facebook.com/OpenLaraTR">facebook</a><br>
|
||||||
<br><i>last update: 14.09.2017</i><br>
|
<br><i>last update: 16.09.2017</i><br>
|
||||||
</p>
|
</p>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user