1

現在、新しい iPad の GLKView で OpenGL ES 2.0 を使用しています。glColor4f を呼び出すたびに、GL_INVALID_OPERATION エラーが発生する以外に何も起こらないようです (つまり、必要なポリゴンに色を付けません)。次に、テクスチャをロードしようとするとすぐに、次のエラー メッセージが表示されます。 Error loading file: The operation couldn't be completed. (GLKTextureLoaderErrorDomain error 8.)

しかし、glColor4f が呼び出される前は、すべて正常に動作します。drawInRect のコードは次のとおりです。

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

    // Render the object with GLKit
    self.effect.texture2d0.enabled        = NO;
    self.effect.transform.modelviewMatrix = _defaultModelMatrix;

    [self.effect prepareToDraw];

    // Render the grid
    glBindBuffer(GL_ARRAY_BUFFER, _gridVertexBuffer);
    glEnableVertexAttribArray(GLKVertexAttribPosition);
    glVertexAttribPointer(GLKVertexAttribPosition, 2, GL_FLOAT, GL_FALSE, 0, 0);

    glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
    glDrawArrays(GL_TRIANGLES, 0, TRIANGLES * 6);

    glDisableVertexAttribArray(GLKVertexAttribPosition);
    glBindBuffer(GL_ARRAY_BUFFER, 0);
}

誰かが助けてくれれば、本当に感謝しています。ただし、指摘すべきことがいくつかあります。色を付けようとしているオブジェクトは VBO に保存されており、(赤くしようとしているにもかかわらず) 白い色できれいにレンダリングされます。

ありがとう

4

1 に答える 1

1

glColor4f は OpenGLES2.0 コマンドではありません (GLES1.1 からのものです)

あなたがしたいことは、シェーダーで「色」(または類似のもの) と呼ばれるユニフォームを宣言し、シェーダーのユニフォームで通常行うようにそのユニフォームを設定し、ピクセルを書き込む前にフラグメントの色をそのユニフォームで乗算することです。

于 2012-08-03T21:09:52.173 に答える