CoglHandle cogl_create_shader (CoglShaderType type) { CoglShader *shader; _COGL_GET_CONTEXT (ctx, COGL_INVALID_HANDLE); switch (type) { case COGL_SHADER_TYPE_VERTEX: case COGL_SHADER_TYPE_FRAGMENT: break; default: g_warning ("Unexpected shader type (0x%08lX) given to " "cogl_create_shader", (unsigned long) type); return COGL_INVALID_HANDLE; } shader = g_slice_new (CoglShader); shader->language = COGL_SHADER_LANGUAGE_GLSL; shader->gl_handle = 0; shader->compilation_pipeline = NULL; shader->type = type; return _cogl_shader_handle_new (shader); }
CoglHandle cogl_create_shader (COGLenum shaderType) { CoglShader *shader; _COGL_GET_CONTEXT (ctx, 0); shader = g_slice_new (CoglShader); shader->ref_count = 1; shader->gl_handle = glCreateShaderObjectARB (shaderType); COGL_HANDLE_DEBUG_NEW (shader, shader); return _cogl_shader_handle_new (shader); }
CoglHandle cogl_create_shader (CoglShaderType type) { CoglShader *shader; GLenum gl_type; if (type == COGL_SHADER_TYPE_VERTEX) gl_type = GL_VERTEX_SHADER; else if (type == COGL_SHADER_TYPE_FRAGMENT) gl_type = GL_FRAGMENT_SHADER; else { g_warning ("Unexpected shader type (0x%08lX) given to " "cogl_create_shader", (unsigned long) type); return COGL_INVALID_HANDLE; } shader = g_slice_new (CoglShader); shader->gl_handle = glCreateShader (gl_type); return _cogl_shader_handle_new (shader); }