summaryrefslogtreecommitdiff
path: root/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp
diff options
context:
space:
mode:
authordegasus <wickmarkus@web.de>2013-01-31 13:00:15 +0100
committerdegasus <wickmarkus@web.de>2013-01-31 13:00:15 +0100
commit4a463f4588e2968c499236458c5712a489622633 (patch)
tree036d9ea6d478eeb310cb8df4e6a06aca20debf35 /Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp
parentc05f66bdd08ce73b55252572e1d9adbf4daa886a (diff)
also add glBufferSubData for ubo upload
so osx start game, but everything is black
Diffstat (limited to 'Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp')
-rw-r--r--Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp b/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp
index 76bf1e7e81..552a08f961 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp
+++ b/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp
@@ -212,8 +212,12 @@ void ProgramShaderCache::UploadConstants()
s_ubo_iterator = 0;
}
void *ubo = glMapBufferRange(GL_UNIFORM_BUFFER, s_ubo_iterator, s_ubo_buffer_size, GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT | GL_MAP_INVALIDATE_RANGE_BIT);
- memcpy(ubo, s_ubo_buffer, s_ubo_buffer_size);
- glUnmapBuffer(GL_UNIFORM_BUFFER);
+ if(ubo) {
+ memcpy(ubo, s_ubo_buffer, s_ubo_buffer_size);
+ glUnmapBuffer(GL_UNIFORM_BUFFER);
+ } else {
+ glBufferSubData(GL_UNIFORM_BUFFER, s_ubo_iterator, s_ubo_buffer_size, s_ubo_buffer);
+ }
glBindBufferRange(GL_UNIFORM_BUFFER, 1, s_ps_vs_ubo, s_ubo_iterator, s_vs_data_offset);
glBindBufferRange(GL_UNIFORM_BUFFER, 2, s_ps_vs_ubo, s_ubo_iterator + s_vs_data_offset, s_ubo_buffer_size - s_vs_data_offset);