T
ravenheart schrieb:
Wie bekomme ich einen Shader in einen String?
Einfach die Datei einlesen?
Genau
ravenheart schrieb:
Ich bitte euch mir zu helfen und entgegen der Gewohnheit ein fertiges Progrämmlein zu posten das ich studieren kann^^
Meine OpenGL Tests sind noch nicht so weit das ich etwas Zeichne, daher kann dir nur den Code den ich zum laden der Shader verwende anbieten. Getestet ist das ganze daher natürlich auch noch nicht richtig.
void loadFile(char *filename, char **buffer) {
FILE* file = fopen(filename, "rb");
fseek(file, 0, SEEK_END);
long len = ftell(file);
fseek(file, 0, SEEK_SET);
void* buf = malloc((size_t)len+1);
fread(buf, 1, (size_t)len, file);
*buffer = (char*)buf;
(*buffer)[len] = 0;
}
void prepareShader() {
// Shader
char *vs, *fs;
GLuint vShader, fShader;
vShader = glCreateShader(GL_VERTEX_SHADER);
fShader = glCreateShader(GL_FRAGMENT_SHADER);
// Load shader program from file
loadFile("minimal.vert", &vs);
loadFile("minimal.frag", &fs);
const char* cvs = vs;
const char* cfs = fs;
glShaderSource(vShader, 1, &cvs, NULL);
glShaderSource(vShader, 1, &cfs, NULL);
glCompileShader(vShader);
glCompileShader(fShader);
// Program (auch GLuint)
program = glCreateProgram();
glAttachShader(program, vShader);
glAttachShader(program, fShader);
glLinkProgram(program);
glUseProgram(program);
}
Edit: Die loadFile korrigiert