首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安卓与桌面Chrome之间的drawArraysInstancedANGLE结果不一致。间歇性损坏(?)桌面上的属性缓冲区

安卓与桌面Chrome之间的drawArraysInstancedANGLE结果不一致。间歇性损坏(?)桌面上的属性缓冲区
EN

Stack Overflow用户
提问于 2017-10-04 16:03:16
回答 1查看 71关注 0票数 0

我第一次尝试。我有两个使用vertexAttribDivisorANGLE的属性缓冲区。我把位置和旋转数据放在一个属性缓冲区中,纹理数据放在另一个属性缓冲区中。我在一个纹理中使用精灵纸,所以我必须发送我想要绘制的每个“框架”的起始位置和尺寸。位置/旋转缓冲区显示良好,但在桌面铬上纹理缓冲区似乎间歇性损坏。您将看到纹理的闪烁正确显示,但您主要是看到整个雪碧表映射到四边形或只是随机噪音。它在移动铬上似乎呈现得很完美。缓冲区有不同的除数,如果这有区别的话。

我似乎找不到任何结果时,搜索的信息,损坏的顶点缓冲区之间的差异,移动和桌面可能呈现。

下面是一个现场演示:http://industriousthought.com/glLab.html

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-05 09:33:53

问题似乎是,如果你的顶点着色器在drawCircles-vertex-shader矩阵,poseM没有完全初始化。这是你的着色器的一部分

代码语言:javascript
运行
复制
mat4 poseM;
poseM[0][0] = 1.0 / a_pose.z;
poseM[1][1] = 1.0 / a_pose.w;
poseM[2][2] = 1.0;
poseM[3][3] = 1.0;
poseM[3][0] = 1.0 / a_pose.z * a_pose.x;
poseM[3][1] = 1.0 / a_pose.w * a_pose.y;

将矩阵的剩余分量初始化为零会产生一个看似合理的结果:

代码语言:javascript
运行
复制
mat4 poseM;
poseM[0][0] = 1.0 / a_pose.z;
poseM[0][1] = 0.0;
poseM[0][2] = 0.0;
poseM[0][3] = 0.0;
poseM[1][0] = 0.0;
poseM[1][1] = 1.0 / a_pose.w;
poseM[1][2] = 0.0;
poseM[1][3] = 0.0;
poseM[2][0] = 0.0;
poseM[2][1] = 0.0;
poseM[2][2] = 1.0;
poseM[2][3] = 0.0;
poseM[3][0] = 1.0 / a_pose.z * a_pose.x;
poseM[3][1] = 1.0 / a_pose.w * a_pose.y;
poseM[3][2] = 0.0;
poseM[3][3] = 1.0;

用于初始化矩阵的较短版本:

代码语言:javascript
运行
复制
mat4 poseM = mat4(1.); // Initializes matrix to identity
poseM[0][0] = 1.0 / a_pose.z;
poseM[1][1] = 1.0 / a_pose.w;
poseM[3][0] = 1.0 / a_pose.z * a_pose.x;
poseM[3][1] = 1.0 / a_pose.w * a_pose.y;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46569370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档