
webgl问题及解决
那年我七岁
学徒一个,在学习过程中遇到无数的问题,于是来到这里记录一下。
展开
-
三维坐标与平面坐标的转换(threejs)
这个是世界坐标转平面坐标function updateScreenPosition() { if (sprite === undefined) { return false; } else { var vector = new THREE.Vector3(sprite.matrixWorld.elements[12], sprite.matrixWorld....原创 2018-04-19 11:39:49 · 14221 阅读 · 0 评论 -
webgl中uniform、varying、attribute的差别
uniform 表示一次渲染过程中保存不变的,GPU的工作模式是多管道的,相当于一个像素点对应着一个管道, 当然并不是说有这么多管道,只是表示他是一一对应并且一起处理;那么把整个屏幕处理时uniform 是持不变的attribute 表示是实时在改变的,比如通常我们用了存放顶点,和颜色varying 用来着色器之间的通讯,也就是顶点着色器和片段着色去之间的桥梁;比如你要传一个顶点...原创 2018-04-25 21:52:34 · 3011 阅读 · 0 评论 -
glDrawElements: attempt to access out of range vertices in attribute 1
glDrawElements: attempt to access out of range vertices in attribute 1后来发现是我的颜色数据少了;var colors = new Float32Array(numVertices *3);改成var colors = new Float32Array(numVertices *4);所以这句话的意思是 它里面进行查询是越界了;...原创 2018-07-04 12:08:44 · 2384 阅读 · 0 评论 -
webgl 绘制的时候出现 数据混乱问题 和绘制数据小的问题
绘制出现混乱问题加载数据的时候,数据小的时候没有问题,当数据大的时候,就出现数据混乱;最后找到的原因是 下标我传入的是类型是:Uint8Array 发现当它保存的数大于255时就会变小,原因是Uint8Array 是8 位,也就是 2的8次方,也就是它能保存的范围时0 ~ 256 ;当保存为257 的时候,它就变成了1; 绘制数据过大问题:相关绘制设置:gl .drawE...原创 2018-07-27 14:37:15 · 721 阅读 · 0 评论 -
webgl 着色器attribute mat4 传值问题
我在做 instance array 的时候,也就是建筑有重复的数据处理时,把它的几何数据提出来,只需要做不同的平移旋转缩放的操作就可以达到要求;如下:它只是一个几何,进行多次平移绘制达到的效果,用到了instance 扩展,这里不讲这个,单独拿出来讲,把它的点,乘上平移旋转缩放的矩阵,绘制出来的就是它,那么attribute mat4 怎么传值进入;找不到资料,就进行了各种尝...原创 2018-08-08 23:21:10 · 3817 阅读 · 0 评论 -
webgl中视锥体(投影矩阵,观察矩阵,形成的梯形体)的六个片面计算
计算六个平面的方法:this.load = function (dataPtr) { this._planes[0] = new Plane(dataPtr[12] - dataPtr[0], dataPtr[13] - dataPtr[1], dataPtr[14] - dataPtr[2], dataPtr[15] - dataPtr[3]); this._planes[1...原创 2018-08-27 11:35:37 · 1517 阅读 · 0 评论 -
点积,叉积 ,在webgl的意义
叉积一般用来求平面的法向量,叉积得到的是一个标量,这个标量很巧的等于这两个向量组成的平行四边形的面积;资料:https://baike.baidu.com/item/%E5%90%91%E9%87%8F%E7%A7%AF/4601007?fr=aladdin 如果点积一个单位向量,那么得到的是向量投影在单位向量上的分量,例如:A*B = |A|*|B|cosO,如果B 是单位向...原创 2018-08-24 12:02:03 · 1025 阅读 · 1 评论