fixed updating data.
This commit is contained in:
parent
ab10d6293e
commit
d225030745
@ -1198,24 +1198,26 @@ public final class GLRenderer implements Renderer {
|
||||
*/
|
||||
protected void updateShaderStorageBlock(final Shader shader, final StorageBlock storageBlock) {
|
||||
|
||||
int shaderId = shader.getId();
|
||||
|
||||
assert storageBlock.getName() != null;
|
||||
assert shader.getId() > 0;
|
||||
|
||||
bindProgram(shader);
|
||||
|
||||
storageBlock.clearUpdateNeeded();
|
||||
|
||||
final ShaderStorageBufferObject storageData = (ShaderStorageBufferObject) storageBlock.getStorageData();
|
||||
if (storageData.getUniqueId() == -1 || storageData.isUpdateNeeded()) {
|
||||
updateBufferData(storageData);
|
||||
}
|
||||
|
||||
if (storageBlock.isUpdateNeeded()) {
|
||||
|
||||
bindProgram(shader);
|
||||
|
||||
final int shaderId = shader.getId();
|
||||
final int blockIndex = gl4.glGetProgramResourceIndex(shaderId, GL4.GL_SHADER_STORAGE_BLOCK, storageBlock.getName());
|
||||
|
||||
gl4.glShaderStorageBlockBinding(shaderId, blockIndex, storageData.getBinding());
|
||||
gl4.glBindBufferBase(GL4.GL_SHADER_STORAGE_BUFFER, storageData.getBinding(), storageData.getId());
|
||||
|
||||
storageBlock.clearUpdateNeeded();
|
||||
}
|
||||
}
|
||||
|
||||
protected void updateShaderUniforms(Shader shader) {
|
||||
@ -1236,10 +1238,7 @@ public final class GLRenderer implements Renderer {
|
||||
protected void updateShaderStorageBlocks(final Shader shader) {
|
||||
final ListMap<String, StorageBlock> storageBlocks = shader.getStorageBlockMap();
|
||||
for (int i = 0; i < storageBlocks.size(); i++) {
|
||||
final StorageBlock storageBlock = storageBlocks.getValue(i);
|
||||
if (storageBlock.isUpdateNeeded()) {
|
||||
updateShaderStorageBlock(shader, storageBlock);
|
||||
}
|
||||
updateShaderStorageBlock(shader, storageBlocks.getValue(i));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user