将滚动添加到存在的webgl相机

时间:2017-11-07 23:42:53

标签: canvas webgl

有没有办法将相机胶卷添加到第三方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工作原理错了,这是不可能的?另外我知道我可以旋转整个画布元素,但我正在寻找更好的方法,(画布旋转速度慢,图像质量很差)。

1 个答案:

答案 0 :(得分:1)

  

是否可以访问以前运行的着色器的结果?或者所有着色器程序都是孤立的?

这取决于你的意思"结果"。您可以使用gl.readPixels阅读画布的内容。您可以将画布的内容复制到纹理,以便使用gl.texImage2Dgl.copyTexImage2D

进行更多渲染
  

下一步:如果我可以提交一个可以修改顶点坐标的着色器,我该如何控制着色器程序执行的顺序?

可能不是

  

如果一切皆有可能,那么我已经可以使用一些东西来计算正确的变换以获得滚动?

可以滚动

  

甚至可以劫持"劫持" webgl相机还是我的webgl pipline工作原理错了,这是不可能的?另外我知道我可以旋转整个画布元素,但我正在寻找更好的方法,(画布旋转速度慢,图像质量很差)。

关于向现有程序添加roll,实际上没有WebGL。您必须修改程序并修改它在JavaScript中计算其视图矩阵或模型视图矩阵的位置。

我可能建议您阅读一些tutorials on WebGL,也许更清楚的是,您需要进行的更改将使用JavaScript,而不是使用着色器。