1

OpenGL ES 2.0 GLKit で線を引こうとしています。次のコードを実行して OpenGL ES Analyzer を使用すると、次のエラーが発生します。

「存在しないプログラムの使用」 glDrawArrays(GL_LINE_STRIP,0,4)

"GL エラー: 無効な操作" GL_INVALID_OPERATION <- glVertexPointer(2,GL_FLOAT,0,NULL) GL_INVALID_OPERATION <- glEnableClientState(GL_VERTEX_ARRAY)

これが私のコードです:

#import "GLDrawingView.h"


const float data[] = {0.0f, 1.0f, 0.0f, 0.0f, 1.0f, -0.0f, 0.0f, 1.0f};



@interface GLDrawingView () {
    GLuint lineVBO;
}

@end

@implementation GLDrawingView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [EAGLContext setCurrentContext:self.context];           
        glGenBuffers(1, &lineVBO);
        glBindBuffer(GL_ARRAY_BUFFER, lineVBO);
        glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW);
    }
    return self;
}

- (void)drawRect:(CGRect)rect
{
    glVertexPointer(2, GL_FLOAT, 0, NULL);   
    glEnableClientState(GL_VERTEX_ARRAY);
    glDrawArrays(GL_LINE_STRIP, 0, sizeof(data) / sizeof(float) / 2);
}

@end
4

1 に答える 1

5

OpenGL ES 2.0で何かを描画するときはglUseProgram、レンダリングにシェーダープログラム()を使用する必要があります。GLES2ではシェーダーなしでレンダリングすることはできません。

于 2012-05-11T22:17:49.597 に答える