首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSBO写入不可见。

SSBO写入不可见。
EN

Stack Overflow用户
提问于 2016-07-03 11:32:31
回答 1查看 411关注 0票数 1

我正在研究一个使用OpenGL的小粒子系统。

问题是更新计算机着色器中的位置似乎不起作用。

下面是代码:

  1. ParticleInfo { Vec4f位置;// w: s坐标Vec4f法线;// w: t坐标浮点materialIndex;Vec3f oldPosition;};
  2. Init缓冲器 glGenVertexArrays(1,&mPar逆转录void);glBindVertexArray(mParticleVAO);glGenBuffers(1,&mParticleVBO);glBindBuffer(GL_ARRAY_BUFFER,mParticleVBO);glBufferData(GL_ARRAY_BUFFER,sizeof(ParticleInfo) * mNumParticles,particleData.data(),GL_STATIC_DRAW);glEnableVertexAttribArray(0);glVertexAttribPointer(0,4,GL_FLOAT,GL_FALSE,sizeof(GL_FALSE),(无效*));GL_STATIC_DRAW(1);glVertexAttribPointer(1,4,GL_FLOAT,GL_FALSE,sizeof(ParticleInfo),(void*)(NULL +sizeof(Vec4f);glEnableVertexAttribArray(2);glVertexAttribPointer(2,1,GL_FLOAT,GL_FALSE,sizeof(ParticleInfo),(void*)(NULL +2*sizeof(Vec4f);glBindBuffer(GL_ARRAY_BUFFER,0);glBindVertexArray(0);
  3. 用计算着色器gl->setUniform(mParticleMoveProgram->getUniformLoc("numParticles"),mNumParticles更新缓冲区;glBindBufferBase(GL_SHADER_STORAGE_BUFFER,0,mParticleVBO);glBindBufferBase(GL_SHADER_STORAGE_BUFFER,1,mAttractorSSBO);int localSizeX = 64*8;int groupSizeX = (mNumParticles + localSizeX - 1) / localSizeX;glDispatchCompute(groupSizeX,1,1);glMemoryBarrier(GL_ALL_BARRIER_BITS,0,0);(,1,0);
  4. 着色码 #version 450布局(local_size_x= 64);结构ParticleInfo { vec4位置;//仅修改位置;vec4法线;浮点数;vec3 oldPosition;};结构吸引子{ vec3位置;浮点数;};布局(绑定= 0,std430)缓冲区ParticleArray { ParticleInfo particles[];};布局(绑定= 1,std430)缓冲区AttractorArray { Attractor attractors[];};int(gl_LocalInvocationIndex)*PARTICLES_PER_THREAD;verlet(在vec3 a中,在vec3 x中,在vec3 xOld中,在浮点dt中){返回2.0 *x- xOld +a* dt*dt;} vec3 main() { const PARTICLES_PER_THREAD = 8;int指数=vec3(指数>= numParticles)返回;attractors=吸引子;const浮点数G= 9.8;for (int i= 0;i
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-16 18:21:01

正如@derhass评论的那样。记忆结构不匹配。每个线程的正确索引似乎也存在问题。我将每个线程的索引设置为:

代码语言:javascript
复制
index = PARTICLES_PER_THREAD * int(gl_WorkGroupSize.x * gl_WorkGroupID.x + gl_LocalInvocationID.x);

谢谢你的帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38169514

复制
相关文章

相似问题

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