mirror of https://github.com/aap/librw.git
64 lines
1.5 KiB
C++
Executable File
64 lines
1.5 KiB
C++
Executable File
#include "rwtest.h"
|
|
|
|
namespace rw {
|
|
namespace gl {
|
|
|
|
GLint
|
|
linkProgram(GLint vertshader, GLint fragshader)
|
|
{
|
|
GLint success;
|
|
GLint len;
|
|
char *log;
|
|
|
|
GLint program = glCreateProgram();
|
|
assert(program != 0);
|
|
glBindAttribLocation(program, 0, "in_vertex");
|
|
glBindAttribLocation(program, 1, "in_texCoord");
|
|
glBindAttribLocation(program, 2, "in_normal");
|
|
glBindAttribLocation(program, 3, "in_color");
|
|
glBindAttribLocation(program, 4, "in_weight");
|
|
glBindAttribLocation(program, 5, "in_indices");
|
|
glBindAttribLocation(program, 6, "in_extraColor");
|
|
glAttachShader(program, vertshader);
|
|
glAttachShader(program, fragshader);
|
|
glLinkProgram(program);
|
|
glGetProgramiv(program, GL_LINK_STATUS, &success);
|
|
if(!success){
|
|
glGetProgramiv(program, GL_INFO_LOG_LENGTH, &len);
|
|
log = new char[len];
|
|
glGetProgramInfoLog(program, len, NULL, log);
|
|
fprintf(stderr, "Link Error: %s\n", log);
|
|
delete[] log;
|
|
glDeleteProgram(program);
|
|
return 0;
|
|
}
|
|
return program;
|
|
}
|
|
|
|
GLint
|
|
compileShader(const char **src, int count, int type)
|
|
{
|
|
GLint success;
|
|
GLint len;
|
|
char *log;
|
|
|
|
GLint shader = glCreateShader(type);
|
|
assert(shader != 0);
|
|
glShaderSource(shader, count, src, NULL);
|
|
glCompileShader(shader);
|
|
glGetShaderiv(shader, GL_COMPILE_STATUS, &success);
|
|
if(!success){
|
|
glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &len);
|
|
log = new char[len];
|
|
glGetShaderInfoLog(shader, len, NULL, log);
|
|
fprintf(stderr, "Shader Error: %s\n", log);
|
|
delete[] log;
|
|
glDeleteProgram(shader);
|
|
return 0;
|
|
}
|
|
return shader;
|
|
}
|
|
|
|
}
|
|
}
|