0
問題是,我的glsl加載程序不起作用,我看不到我做錯了什麼。GLSL着色器加載程序問題
void cShader::Load(const char *v_filename,const char *f_filename)
{
char *vs,*fs;
vShaderList = glCreateShader(GL_VERTEX_SHADER);
fShaderList = glCreateShader(GL_FRAGMENT_SHADER);
std::ifstream v_fs;
v_fs.open(v_filename,std::ios::binary);
v_fs.seekg(0,std::ios::end);
int v_filesize = v_fs.tellg();
vs = new char[v_filesize+1];
v_fs.seekg(0,std::ios::beg);
v_fs.read(vs,v_filesize);
v_fs.close();
vs[v_filesize] = '\n';
std::cout.write(vs,v_filesize);
std::ifstream f_fs;
f_fs.open(f_filename,std::ios::binary);
f_fs.seekg(0,std::ios::end);
int f_filesize = f_fs.tellg();
fs = new char[f_filesize+1];
f_fs.seekg(0,std::ios::beg);
f_fs.read(fs,f_filesize);
f_fs.close();
fs[f_filesize] = '\n';
std::cout.write(fs,f_filesize);
const char * vv = vs;
const char * ff = fs;
glShaderSource(vShaderList, 1, &vv,NULL);
glShaderSource(fShaderList, 1, &ff,NULL);
free(vs);free(fs);
glCompileShader(vShaderList);
glCompileShader(fShaderList);
ShaderID = glCreateProgram();
glAttachShader(ShaderID,vShaderList);
glAttachShader(ShaderID,fShaderList);
glLinkProgram(ShaderID);
glUseProgram(ShaderID);
}
你應該回答的第一件事是什麼不起作用?它崩潰?你有空白的屏幕?等 – 2010-08-05 18:49:31
啊這是頂點着色器文件是錯誤的(我複製一個錯誤)。抱歉。 – user389006 2010-08-05 21:45:09
vs = new char [...];免費(vs); 你真的在問問題。使用delete [] vs; – Bahbar 2010-08-06 07:38:51