2013-03-04 3 views
1

Просто интересно, если кто-то может помочь мне с следующий фрагмент кода:индекс массива не является целым числом ошибок

// Get uniform locations. 
GLint m_nUniforms = 0; 
glUniformMatrix4fv(uniforms, 1, 0, _modelViewProjectionMatrix.m); 


glGetProgramiv(_program, GL_ACTIVE_UNIFORMS, &m_nUniforms); 
for(unsigned i = 0; i < m_nUniforms; i++) 
{ 
    char *uniformName = NULL; 
    GLint size; 
    GLenum type; 

    glGetActiveUniform(_program, i, max_length + 1, NULL, &size, &type, uniformName); 
    uniforms[uniformName] = glGetUniformLocation(_program, uniformName); 
} 

Я хочу, чтобы назначить форму с индексом типа «символ * uiformName» для каждой итерации for-loop. Я получаю ошибку «Индекс массива не является целым числом».

Как я могу использовать символ в виде индекса массива?

Спасибо

ответ

3

То, что вы хотите, то это словарь, где оба ключа и значения являются строками:

NSMutableDictionary *uniforms = [[NSMutableDictionary alloc] init]; 

for (blah) 
{ 
    glGetActiveUniform(_program, i, max_length + 1, NULL, &size, &type, uniformName); 
    char *uniform = glGetUniformLocation(_program, uniformName); 
    [uniforms addObject:[NSString stringWithUTF8String:uniform] 
       forKey:[NSString stringWithUTF8String:uniformName]]; 
}