Skip to content

Instantly share code, notes, and snippets.

@weiancheng
Created May 5, 2020 09:45
Show Gist options
  • Save weiancheng/4e53172e1a9ee00acc1b692eaea984a4 to your computer and use it in GitHub Desktop.
Save weiancheng/4e53172e1a9ee00acc1b692eaea984a4 to your computer and use it in GitHub Desktop.
[Android OpenGL Shader] #android #opengl #shader #glsl
#include "shader_handler.h"
bool ShaderHandler::initializeShader() {
// vertex shader
vshader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vshader, 1, &vertex_shader_source, nullptr);
glCompileShader(vshader);
GLint vertex_compiled;
glGetShaderiv(vshader, GL_COMPILE_STATUS, &vertex_compiled);
if (vertex_compiled != GL_TRUE) {
GLsizei log_length = 0;
GLchar message[1024];
glShaderInfoLog(vshader, 1024, &log_length, message);
__android_log_print(TAG, "error compiling vertex shader: %s", message);
glDeleteShader(vshader);
return false;
}
// fragment shader
fshader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fshader, 1, &fragment_shader_source, nullptr);
glCompileShader(fshader);
GLint fragment_compiled;
glGetShaderiv(fshader, GL_COMPILE_STATUS, &fragment_compiled);
if (fragment_compiled != GL_TRUE) {
GLsizei log_length = 0;
GLchar message[1024];
glShaderInfoLog(fshader, 1024, &log_length, message);
__android_log_print(TAG, "error compiling fragment shader: %s", message);
glDeleteShader(fshader);
return false;
}
return true;
}
bool ShaderHandler::initializeProgram() {
program = glCreateProgram();
glAttachShader(program, vshader);
glAttachShader(program, fshader);
glLinkProgram(program);
GLint program_linked;
glGetProgramiv(program, GL_LINK_STATUS, &program_linked);
if (program_linked != GL_TRUE) {
GLsizei log_length = 0;
GLchar message[1024];
glGetProgramInfoLog(program, 1024, &log_length, message);
__android_log_print(TAG, "error linking program: %s", message);
glDeleteProgram(program);
return false;
}
return true;
}
#include <GLES3/gl3.h>
class ShaderHandler {
public:
bool initializeShader();
bool initializeProgram();
private:
GLuint vshader;
GLuint fshader;
GLuint program;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment