MCPcopy Create free account
hub / github.com/9miao/CrossApp / initWithVertexShaderByteArray

Method initWithVertexShaderByteArray

CrossApp/shaders/CAGLProgram.cpp:63–119  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

61}
62
63bool CAGLProgram::initWithVertexShaderByteArray(const GLchar* vShaderByteArray, const GLchar* fShaderByteArray)
64{
65#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)
66 GLboolean hasCompiler = false;
67 glGetBooleanv(GL_SHADER_COMPILER, &hasCompiler);
68 m_hasShaderCompiler = (hasCompiler == GL_TRUE);
69
70 if(!m_hasShaderCompiler)
71 {
72 return initWithPrecompiledProgramByteArray(vShaderByteArray,fShaderByteArray);
73 }
74#endif
75
76 m_uProgram = glCreateProgram();
77 CHECK_GL_ERROR_DEBUG();
78
79 m_uVertShader = m_uFragShader = 0;
80
81 if (vShaderByteArray)
82 {
83 if (!compileShader(&m_uVertShader, GL_VERTEX_SHADER, vShaderByteArray))
84 {
85 CCLOG("CrossApp: ERROR: Failed to compile vertex shader");
86 return false;
87 }
88 }
89
90 // Create and compile fragment shader
91 if (fShaderByteArray)
92 {
93 if (!compileShader(&m_uFragShader, GL_FRAGMENT_SHADER, fShaderByteArray))
94 {
95 CCLOG("CrossApp: ERROR: Failed to compile fragment shader");
96 return false;
97 }
98 }
99
100 if (m_uVertShader)
101 {
102 glAttachShader(m_uProgram, m_uVertShader);
103 }
104 CHECK_GL_ERROR_DEBUG();
105
106 if (m_uFragShader)
107 {
108 glAttachShader(m_uProgram, m_uFragShader);
109 }
110 m_pHashForUniforms = NULL;
111
112 CHECK_GL_ERROR_DEBUG();
113
114#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT)
115 m_shaderId = CCPrecompiledShaders::sharedPrecompiledShaders()->addShaders(vShaderByteArray, fShaderByteArray);
116#endif
117
118 return true;
119}
120

Callers 3

loadDefaultShaderMethod · 0.80
loadShadersMethod · 0.80
loadShadersMethod · 0.80

Calls 2

addShadersMethod · 0.80
compileShaderFunction · 0.50

Tested by

no test coverage detected