小编Dan*_*iel的帖子

glGetAttribLocation/glGetUniformLocation返回0,导致glDrawArrays调用(iOS)上的EXC_BAD_ACCESS

我正在为iOS创建一个简单的OpenGL ES 2.0应用程序,每当我调用glDrawArrays时.我发现这是在我之前为我的两个属性(位置和颜色)调用glEnableVertexAttribArray时发生的,然后发现glGetAttribLocation返回1表示位置,0表示颜色,然后还发现glGetUniformLocation为我的MVP返回0矩阵.我不知道,如果0是有效的值,或者为什么glEnableVertexAttribArray似乎是造成EXC_BAD_ACCESS时调用glDrawArrays被调用.

这是我的代码:

compileShaders函数:

-(void)compileShaders {
GLuint vertShader = [self compileShader:@"Shader" ofType:GL_VERTEX_SHADER];
GLuint fragShader = [self compileShader:@"Shader" ofType:GL_FRAGMENT_SHADER];

GLuint program = glCreateProgram();
glAttachShader(program, vertShader);
glAttachShader(program, fragShader);
glLinkProgram(program);

GLint success;
glGetProgramiv(program, GL_LINK_STATUS, &success);
if (success == GL_FALSE) {
    GLchar messages[256];
    glGetProgramInfoLog(program, sizeof(messages), 0, &messages[0]);
    NSLog(@"%@", [NSString stringWithUTF8String:messages]);
    exit(1);
}

glUseProgram(program);

_positionSlot = glGetAttribLocation(program, "position");
_colorSlot = glGetAttribLocation(program, "color"); //Returns 0
_mvpSlot = glGetUniformLocation(program, "MVP"); //Returns 0

if (!_positionSlot || !_colorSlot || !_mvpSlot) {
    NSLog(@"Failed to retrieve the locations of the …
Run Code Online (Sandbox Code Playgroud)

exc-bad-access opengl-es ios

3
推荐指数
1
解决办法
1万
查看次数

标签 统计

exc-bad-access ×1

ios ×1

opengl-es ×1