当使用支持OpenGL 4.4的集成图形(Intel HD 5500)时,我的原子计数器正确递增。
我正在使用一个简单的计算着色器,该着色器将增加一个计数器,并通过128次调用在所有调用完成后得到128作为值。
当移动到支持OpenGL 4.6的Nvidia卡(920m)时,即使我不调用着色器,这些计数器也会显示0或非常大的随机值,仅绑定缓冲区会导致显示非0的值
请注意,我使用memset
将缓冲区重置为每帧0。
//creating the buffer
glGenBuffers(1, &m_RendererID);
glBindBuffer(GL_ATOMIC_COUNTER_BUFFERS, m_RendererID);
glBufferData(GL_ATOMIC_COUNTER_BUFFERS, sizeof(GLuint), GL_DYNAMIC_DRAW));
//binding (glUseProgram already called and BindingPoint = 3)
glBindBuffer(GL_ATOMIC_COUNTER_BUFFERS, m_RendererID);
glBindBufferBase(GL_ATOMIC_COUNTER_BUFFERS, BindingPoint, m_RendererID);
//shader code
layout(binding = 3, offset=0) uniform atomic_uint CC;