ios - 用glDrawArray绘图

标签 ios opengl-es cocos2d-iphone

在我的draw中的CCLayer函数中。我在画一些线,CGPoints存储在std::vector中。我已经使用ccDrawLine成功绘制了线条。但是,当使用glDrawArray时,什么也没有显示。我已经提供了结果的屏幕截图。如您所见,使用ccDrawnLine时,它正确绘制了线条。有任何想法吗?

[更新]我正在使用Cocos2d v2.0,默认情况下它使用OpenGLES 2.0。

//openGLES
#include <OpenGLES/EAGL.h>
#include <OpenGLES/ES2/gl.h>
#include <OpenGLES/ES2/glext.h>

- (void) draw {
    glLineWidth( 3.0f );

    //begin and clear
    [renderTexture beginWithClear:waveform4F.r g:waveform4F.g b:waveform4F.b a:waveform4F.a];
    vector<CGPoint> vertices = bufferQueue.front();

    if (WaveformStyleLined) {
        for (int i = 1; i < vertices.size(); i++)
            ccDrawLine(vertices[i - 1], vertices[i]);
    } else {
        ccGLEnableVertexAttribs( kCCVertexAttribFlag_Position );
        kmGLPushMatrix();

        glVertexAttribPointer(kCCVertexAttrib_Position, 2, GL_FLOAT, GL_FALSE, sizeof(CGPoint), &vertices[0]);
        glDrawArrays(GL_LINES, sizeof(CGPoint), vertices.size());

        kmGLPopMatrix();
    }

    bufferQueue.pop();
    [renderTexture end];
}



这是我的CGPoint中的一些vertices:
2012-08-18 08:57:49.750 vertices[1]:NSPoint: {1, 48.09375}
2012-08-18 08:57:49.751 vertices[2]:NSPoint: {2, 47.996094}
2012-08-18 08:57:49.752 vertices[3]:NSPoint: {3, 48.046875}
2012-08-18 08:57:49.753 vertices[4]:NSPoint: {4, 48.214844}
2012-08-18 08:57:49.754 vertices[5]:NSPoint: {5, 48.152344}
2012-08-18 08:57:49.755 vertices[6]:NSPoint: {6, 48.035156}
2012-08-18 08:57:49.755 vertices[7]:NSPoint: {7, 48.078125}
2012-08-18 08:57:49.756 vertices[8]:NSPoint: {8, 48.144531}
2012-08-18 08:57:49.757 vertices[9]:NSPoint: {9, 48.0625}
2012-08-18 08:57:49.757 vertices[10]:NSPoint: {10, 48.242188}

最佳答案

我最终使用了ccDrawPoly,其中在内部使用glDrawArray并实现了与ccDrawLine完全相同的输出,但是速度更快,因为我没有逐点进行检索。但是,我仍然对如何使用纯OpenGL代码执行此操作感到好奇。任何帮助或指示将不胜感激。

if (WaveformStyleLined) {
    for (int i = 1; i < vertices.size(); i++)
        ccDrawLine(vertices[i - 1], vertices[i]);

} else {
    ccDrawPoly(&vertices[0], vertices.size(), false);
}

关于ios - 用glDrawArray绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12003758/

相关文章:

ios - "Type ' Alamofire 4.0 上的任何 ' has no subscript members"错误

ios - EXC_BAD_ACCESS 在使用它评估 NSExpression 后更新 Swift 字典时

iOS Safari 因提交大型帖子数据表单而崩溃

iphone - glDrawArrays 有时绘制黑色

java - 动画 getTexture() 不存在?

android - 在 OpenGL ES 2.0 着色器中使用纹理作为调色板

iphone - 检查绘制的路径/CGPath 是否在 iPhone 游戏中与自身相交

iphone - cocos2d : CCsprite setVisible method not working

cocos2d-iphone - Cocos2d 2.0.3 使用未声明的标识符 'glColor4f'

ios - OCMock 可以运行 block 参数吗?