1
ビューベースのアプリケーションからopengl es 2.0を使ってグラフを作成しようとしていますが、 - (BOOL)loadShadersが常にNOを返すので、制御がrenderer1になります。何が起きているのか?- (BOOL)loadShadersメソッドが私のために働いていません
- (BOOL)loadShaders {
//return YES;
GLuint vertShader, fragShader;
NSString *vertShaderPathname, *fragShaderPathname;
// create shader program
program = glCreateProgram();
// create and compile vertex shader
vertShaderPathname = [[NSBundle mainBundle] pathForResource:@"Shader" ofType:@"vsh"]; // this is returning nil always.
if (!compileShader(&vertShader, GL_VERTEX_SHADER, 1, vertShaderPathname)) {
destroyShaders(vertShader, fragShader, program);
return NO;
}
// create and compile fragment shader
fragShaderPathname = [[NSBundle mainBundle] pathForResource:@"Shader" ofType:@"fsh"];
if (!compileShader(&fragShader, GL_FRAGMENT_SHADER, 1, fragShaderPathname)) {
destroyShaders(vertShader, fragShader, program);
return NO;
}
// attach vertex shader to program
glAttachShader(program, vertShader);
// attach fragment shader to program
glAttachShader(program, fragShader);
// bind attribute locations
// this needs to be done prior to linking
glBindAttribLocation(program, ATTRIB_VERTEX, "position");
glBindAttribLocation(program, ATTRIB_COLOR, "color");
// link program
if (!linkProgram(program)) {
destroyShaders(vertShader, fragShader, program);
return NO;
}
// get uniform locations
uniforms[UNIFORM_MODELVIEW_PROJECTION_MATRIX] = glGetUniformLocation(program, "modelViewProjectionMatrix");
// release vertex and fragment shaders
if (vertShader) {
glDeleteShader(vertShader);
vertShader = 0;
}
if (fragShader) {
glDeleteShader(fragShader);
fragShader = 0;
}
return YES;
}
「はい」と「いいえ」は何ですか?あなた自身のバージョンのbool? WTF。 – shoosh
@shooshこれらは、objective-cの組み込みブール値です –