|
32 | 32 | #include "renderer/backend/opengl/UtilsGL.h"
|
33 | 33 |
|
34 | 34 | CC_BACKEND_BEGIN
|
35 |
| - |
| 35 | +namespace { |
| 36 | + std::string vsPreDefine("#version 100\n precision highp float;\n precision highp int;\n"); |
| 37 | + std::string fsPreDefine("precision mediump float;\n precision mediump int;\n"); |
| 38 | +} |
36 | 39 |
|
37 | 40 | ProgramGL::ProgramGL(const std::string& vertexShader, const std::string& fragmentShader)
|
38 | 41 | : Program(vertexShader, fragmentShader)
|
39 | 42 | {
|
40 | 43 | #if CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID
|
41 | 44 | //some device required manually specify the precision qualifiers for vertex shader.
|
42 |
| - std::string vsPreDefine("#version 100\n precision highp float;\n precision highp int;\n"); |
43 |
| - std::string fsPreDefine("precision mediump float;\n precision mediump int;\n"); |
44 |
| - vsPreDefine.append(vertexShader); |
45 |
| - fsPreDefine.append(fragmentShader); |
46 |
| - _vertexShader = std::move(vsPreDefine); |
47 |
| - _fragmentShader = std::move(fsPreDefine); |
48 |
| - _vertexShaderModule = static_cast<ShaderModuleGL*>(ShaderCache::newVertexShaderModule(_vertexShader)); |
49 |
| - _fragmentShaderModule = static_cast<ShaderModuleGL*>(ShaderCache::newFragmentShaderModule(_fragmentShader)); |
| 45 | + _vertexShaderModule = static_cast<ShaderModuleGL*>(ShaderCache::newVertexShaderModule(std::move(vsPreDefine + _vertexShader))); |
| 46 | + _fragmentShaderModule = static_cast<ShaderModuleGL*>(ShaderCache::newFragmentShaderModule(std::move(fsPreDefine + _fragmentShader))); |
50 | 47 | #else
|
51 | 48 | _vertexShaderModule = static_cast<ShaderModuleGL*>(ShaderCache::newVertexShaderModule(_vertexShader));
|
52 | 49 | _fragmentShaderModule = static_cast<ShaderModuleGL*>(ShaderCache::newFragmentShaderModule(_fragmentShader));
|
@@ -91,8 +88,8 @@ void ProgramGL::reloadProgram()
|
91 | 88 | _activeUniformInfos.clear();
|
92 | 89 | _mapToCurrentActiveLocation.clear();
|
93 | 90 | _mapToOriginalLocation.clear();
|
94 |
| - static_cast<ShaderModuleGL*>(_vertexShaderModule)->compileShader(backend::ShaderStage::VERTEX, _vertexShader); |
95 |
| - static_cast<ShaderModuleGL*>(_fragmentShaderModule)->compileShader(backend::ShaderStage::FRAGMENT, _fragmentShader); |
| 91 | + static_cast<ShaderModuleGL*>(_vertexShaderModule)->compileShader(backend::ShaderStage::VERTEX, std::move(vsPreDefine + _vertexShader)); |
| 92 | + static_cast<ShaderModuleGL*>(_fragmentShaderModule)->compileShader(backend::ShaderStage::FRAGMENT, std::move(fsPreDefine + _fragmentShader)); |
96 | 93 | compileProgram();
|
97 | 94 | computeUniformInfos();
|
98 | 95 |
|
|
0 commit comments