簡體   English   中英

OpenGL ES 2.0 GLKit畫一條線

[英]OpenGL ES 2.0 GLKit Draw a line

我正在嘗試與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

在OpenGL ES 2.0中繪制內容時,必須使用着色器程序( glUseProgram )進行渲染。 如果沒有GLES2中的着色器,則無法渲染。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM