0

我试图将项目树(Shader.vsh 和 Shader.fsh)中的文件重命名为(Shader2.vsh 和 Shader2.fsh),我希望它不起作用,但它起作用了。

我将 ViewController.m 中的文件名重命名为:

vertShaderPathname = [[NSBundle mainBundle] pathForResource:@"Shader" ofType:@"vsh"];

成为:

vertShaderPathname = [[NSBundle mainBundle] pathForResource:@"Shader2" ofType:@"vsh"];

它不起作用。即使您重命名文件,它也始终使用名称 Shader.vsh。

此外,我试图完全删除该文件,它仍然有效。它显示两个立方体。怎么来的!!!

4

3 回答 3

1

这通常是 Xcode 的问题。如果您只是点击运行按钮,您在项目中删除或重命名的文件将不会从构建的应用程序包中删除。这使构建速度更快,但可能会导致像您这样的奇怪问题。

解决方案,或者实际上只是一种解决方法,是在删除或重命名资源后清理您的项目。可能不是每次都需要,但如果您遇到资源问题,总是值得一试。

于 2012-08-19T17:51:11.103 回答
0

可能是它使用创建默认着色器的 GLKit。

于 2012-08-19T15:53:09.727 回答
0

因为在使用 shders 和 GLKit 呈现的默认模板中。

您应该删除 GLKit 代码。

例如

    - (void)glkView:(GLKView *)view drawInRect:(CGRect)rect
    {
        glClearColor(0.65f, 0.65f, 0.65f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

        glBindVertexArrayOES(_vertexArray);

        // Render the object with GLKit
        [self.effect prepareToDraw]; // GLKit used default shaders

        glDrawArrays(GL_TRIANGLES, 0, 36); // render with GLKit

        // Render the object again with ES2
        glUseProgram(_program);  // enable shader


// set parametres
        glUniformMatrix4fv(uniforms[UNIFORM_MODELVIEWPROJECTION_MATRIX], 1, 0, _modelViewProjectionMatrix.m);
        glUniformMatrix3fv(uniforms[UNIFORM_NORMAL_MATRIX], 1, 0, _normalMatrix.m);

        glDrawArrays(GL_TRIANGLES, 0, 36); // render with Sahder, because glUseProgram(_program);
    }

在 setupGL 你可以找到 [self loadShaders];

于 2012-08-19T17:32:13.717 回答