有没有办法将相机胶卷添加到第三方webgl应用程序?
让我们说,我有一个webgl应用程序,让我们以race conditions为例。
ESRI ESRI Manhattan Skyscrappers Explorer对于相机没有Roll
角度,但仍然是它的webgl应用程序。
问题的第一部分:我可以使用以下代码获得与正在运行的应用程序相同的上下文:
var canvas = document.getElementById("canvas");
var gl = canvas.getContext("webgl");
说相同的上下文我的意思是,如果我通过gl.useProgram(shaderProgram);
添加着色器,是否可以访问以前运行的着色器的结果?或者所有着色器程序都是孤立的?
下一步:如果我可以提交一个可以修改顶点坐标的着色器,我该如何控制着色器程序执行的顺序?
如果一切皆有可能,那么我已经可以使用一些东西来计算正确的变换以获得滚动?
甚至可以劫持"劫持" webgl相机还是我的webgl pipline工作原理错了,这是不可能的?另外我知道我可以旋转整个画布元素,但我正在寻找更好的方法,(画布旋转速度慢,图像质量很差)。
答案 0 :(得分:1)
是否可以访问以前运行的着色器的结果?或者所有着色器程序都是孤立的?
这取决于你的意思"结果"。您可以使用gl.readPixels
阅读画布的内容。您可以将画布的内容复制到纹理,以便使用gl.texImage2D
或gl.copyTexImage2D
下一步:如果我可以提交一个可以修改顶点坐标的着色器,我该如何控制着色器程序执行的顺序?
可能不是
如果一切皆有可能,那么我已经可以使用一些东西来计算正确的变换以获得滚动?
可以滚动
甚至可以劫持"劫持" webgl相机还是我的webgl pipline工作原理错了,这是不可能的?另外我知道我可以旋转整个画布元素,但我正在寻找更好的方法,(画布旋转速度慢,图像质量很差)。
关于向现有程序添加roll,实际上没有WebGL。您必须修改程序并修改它在JavaScript中计算其视图矩阵或模型视图矩阵的位置。
我可能建议您阅读一些tutorials on WebGL,也许更清楚的是,您需要进行的更改将使用JavaScript,而不是使用着色器。