Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在webgl中进行全屏徒手绘制的正确方法是什么?_Javascript_Webgl_Three.js - Fatal编程技术网

Javascript 在webgl中进行全屏徒手绘制的正确方法是什么?

Javascript 在webgl中进行全屏徒手绘制的正确方法是什么?,javascript,webgl,three.js,Javascript,Webgl,Three.js,为了在webgl中实现鼠标手势,我希望允许用户“在屏幕上绘制”徒手模式。在3D webgl中执行此操作将允许在正在使用的笔刷上具有良好的着色器效果,例如火焰效果、光晕或其他酷的图形糖果 当前推荐的在webgl中高效绘制屏幕的方法是什么 谢谢 您有两种选择 您可以绘制到fbo,然后将fbo绘制到画布 或 创建webgl上下文时,可以请求“preserveDrawingBuffer:true” var canvas=document.getElementById(“canvas”); var gl

为了在webgl中实现鼠标手势,我希望允许用户“在屏幕上绘制”徒手模式。在3D webgl中执行此操作将允许在正在使用的笔刷上具有良好的着色器效果,例如火焰效果、光晕或其他酷的图形糖果

当前推荐的在webgl中高效绘制屏幕的方法是什么

谢谢

您有两种选择

您可以绘制到fbo,然后将fbo绘制到画布

创建webgl上下文时,可以请求“preserveDrawingBuffer:true”

var canvas=document.getElementById(“canvas”);
var gl=canvas.getContext(“webgl”,{preserveDrawingBuffer:true});
program=twgl.createProgramFromScripts(gl,[“2d顶点着色器”、“2d片段着色器”]);
gl.useProgram(程序);
var positionLoc=gl.GetAttriblLocation(程序,“v_位置”);
var offsetLoc=gl.getUniformLocation(程序,“u_offset”);
var-res=1;
setupQuad(总图、分辨率、位置定位);
canvas.addEventListener('mousemove',draw,false);
功能图(事件){
var m=getNoPaddingNoBorderCanvasRelativeMousePosition(事件);
//将鼠标坐标转换为剪辑空间,因为这就是
//特定着色器正在使用。请参阅
// https://webglfundamentals.org
//了解如何使用像素而不是剪辑空间。
var x=m.x/gl.canvas.width*2-1;
变量y=m.y/gl.canvas.height*-2+1;//翻转y
画笔(x,y);
}
功能画笔(x,y){
总账统一报表2F(抵销表,x,y);
总帐付款人(总帐三角形、总帐*总帐*6、总帐无符号_短,0);
}
画笔(0,0);
功能设置四元组(总图、网格、位置){
var量表=0.05;
var对象=[];
var vertsAcross=gridRes+1;
var numVerts=vertsAcross*vertsAcross;
var位置=新的浮点数组(numVerts*2);
var指数=新UINT16阵列(6*gridRes*gridRes);
var-poffset=0;

对于(var zz=0;zz nobody,真的吗?FrameBufferObjects是解决方案吗?嗯,问题越含糊,得到好答案的可能性就越小。在提出问题之前,你是否尝试过任何东西?如果你尝试过,我们说不出来,我看到的只是“我知道;我将使用WebGL!现在让我们问某人如何实际实现它”移动到这里(并修复了旧的)