`

OpenGL draw base functions

 
阅读更多
-(void) draw
{
CGSize s = [[CCDirector sharedDirector] winSize];

// draw a simple line
// The default state is:
// Line Width: 1
// color: 255,255,255,255 (white, non-transparent)
// Anti-Aliased
glEnable(GL_LINE_SMOOTH);

 
ccDrawLine( ccp(0, 0), ccp(s.width, s.height) );

// line: color, width, aliased
// glLineWidth > 1 and GL_LINE_SMOOTH are not compatible
// GL_SMOOTH_LINE_WIDTH_RANGE = (1,1) on iPhone
glDisable(GL_LINE_SMOOTH);
glLineWidth( 5.0f );
glColor4ub(255,0,0,255);
ccDrawLine( ccp(0, s.height), ccp(s.width, 0) );

// TIP:
// If you are going to use always the same color or width, you don't
// need to call it before every draw
//
// Remember: OpenGL is a state-machine.

// draw big point in the center
glPointSize(64);
glColor4ub(0,0,255,128);
ccDrawPoint( ccp(s.width / 2, s.height / 2) );

// draw 4 small points
CGPoint points[] = { ccp(60,60), ccp(70,70), ccp(60,70), ccp(70,60) };
glPointSize(4);
glColor4ub(0,255,255,255);
ccDrawPoints( points, 4);

// draw a green circle with 10 segments
glLineWidth(16);
glColor4ub(0, 255, 0, 255);
ccDrawCircle( ccp(s.width/2, s.height/2), 100, 0, 10, NO);

// draw a green circle with 50 segments with line to center
glLineWidth(2);
glColor4ub(0, 255, 255, 255);
ccDrawCircle( ccp(s.width/2, s.height/2), 50, CC_DEGREES_TO_RADIANS(90), 50, YES);

// open yellow poly
glColor4ub(255, 255, 0, 255);
glLineWidth(10);
CGPoint vertices[] = { ccp(0,0), ccp(50,50), ccp(100,50), ccp(100,100), ccp(50,100) };
ccDrawPoly( vertices, 5, NO);

// closed purble poly
glColor4ub(255, 0, 255, 255);
glLineWidth(2);
CGPoint vertices2[] = { ccp(30,130), ccp(30,230), ccp(50,200) };
ccDrawPoly( vertices2, 3, YES);

// closed purble poly 正方形
    glColor4ub(255, 0, 255, 255);
    glLineWidth(2);
    CGPoint vertices3[] = { ccp(30,130), ccp(30,230), ccp(60,230), ccp(60,130) };
    ccDrawPoly( vertices3, 4, YES);

// draw quad bezier path
ccDrawQuadBezier(ccp(0,s.height), ccp(s.width/2,s.height/2), ccp(s.width,s.height), 50);

// draw cubic bezier path
ccDrawCubicBezier(ccp(s.width/2, s.height/2), ccp(s.width/2+30,s.height/2+50), ccp(s.width/2+60,s.height/2-50),ccp(s.width, s.height/2),100);

// restore original values
glLineWidth(1);
glColor4ub(255,255,255,255);
glPointSize(1);
}



蜘蛛例子

// Only draw this debugging information in, well, debug builds.
-(void) draw
{
#if DEBUG
    // Iterate through all nodes of the layer.
    CCNode* node;
    CCARRAY_FOREACH([self children], node)
    {
        // Make sure the node is a CCSprite and has the right tags.
        if ([node isKindOfClass:[CCSprite class]] && (node.tag == 1 || node.tag == 2))
        {
            // The sprite's collision radius is a percentage of its image width. Use that to draw a circle
            // which represents the sprite's collision radius.
            CCSprite* sprite = (CCSprite*)node;
            float radius = [sprite texture].contentSize.width * 0.4f;
            float angle = 0;
            int numSegments = 10;
            bool drawLineToCenter = NO;
            ccDrawCircle(sprite.position, radius, angle, numSegments, drawLineToCenter);
        }
    }
#endif

    CGSize screenSize = [[CCDirector sharedDirector] winSize];
    
    // always keep variables you have to calculate only once outside the loop
    float threadCutPosition = screenSize.height * 0.75f;

    // Draw a spider thread using OpenGL
    // CCARRAY_FOREACH is a bit faster than regular for loop
    CCSprite* spider;
    CCARRAY_FOREACH(spiders, spider)
    {
        // only draw thread up to a certain point
        if (spider.position.y > threadCutPosition)
        {
            // vary thread position a little so it looks a bit more dynamic
            float threadX = spider.position.x + (CCRANDOM_0_1() * 2.0f - 1.0f);
            
            glColor4f(0.5f, 0.5f, 0.5f, 1.0f);
            ccDrawLine(spider.position, CGPointMake(threadX, screenSize.height));
        }
    }
}

@end
分享到:
评论

相关推荐

    OpenGLDraw.rar

    OpenGLDraw.rar是一个包含资源,用于在Microsoft Foundation Class (MFC)框架下实现全屏的OpenGL图形渲染,并且能够通过鼠标和键盘控制视图。在这个项目中,开发者将学习到如何结合MFC与OpenGL来创建一个交互式的三...

    OpengGL环境搭建,可以作为模板使用_OpenGL-Base.zip

    OpengGL环境搭建,可以作为模板使用_OpenGL-Base

    mfc-opengl.rar_MFC opengl _OpenGL MFC_draw_opengl mfc_opengl

    标题“mfc-opengl.rar_MFC OpenGL _OpenGL MFC_draw_opengl mfc_opengl”表明这是一个关于如何在MFC环境中使用OpenGL进行图形绘制的资源包。它可能包含了一个实例项目,演示了如何在MFC应用中集成和使用OpenGL进行...

    win opengl glsl draw water

    在Windows 10环境下,结合Qt框架,我们可以构建一个应用来实现“win OpenGL glsl draw water”的功能,即用水印效果覆盖图像。 首先,让我们深入了解OpenGL的基本概念。OpenGL是一个跨语言、跨平台的编程接口,用于...

    win opengl qt draw texture mixed picture

    在Windows环境下,开发一款应用利用Qt和OpenGL技术来绘制纹理并实现图像的混合效果是一项具有挑战性的任务。这里,我们将深入探讨如何通过OpenGL在Qt框架下实现这一功能,同时涉及了`win10`操作系统、`qt`库、`...

    opengl.rar_3d draw_in_opengl_opengl c++ 3d

    draw 3D object in openGL

    opengl,光照基本base,自用

    opengl,光照基本base,自用

    opengl.zip_delphi OPENGL_delphi draw graph_objects

    OPENGL is a visual component, which provides a simple user interface for drawing simple OPENGL. User can draw nodes (vertices) on the control s client area and link them together (graph s edges or ...

    OpenGL教程 OpenGL教程 OpenGL教程 OpenGL教程 OpenGL教程

    OpenGL教程 OpenGL教程 OpenGL教程 OpenGL教程 OpenGL教程

    C#+opengl实例

    在这个例子中,我们创建了一个`OpenGLControl`,并在`OpenGLDraw`事件中绘制了一个红色的三角形。`Ortho`函数用于设置正交投影,`LoadIdentity`重置矩阵,`Begin`和`End`定义了顶点数组,`Color3f`设置了颜色,`...

    OpenGL论文 OpenGL论文 OpenGL论文 OpenGL论文 OpenGL论文

    OpenGL是计算机图形学领域广泛应用的一种编程接口,它允许开发者创建复杂的3D图形和视觉效果。在本篇讨论中,我们将深入探讨OpenGL的核心概念、应用场景、技术特性以及与相关技术的对比。 OpenGL是一种跨语言、跨...

    OpenGL实例 OpenGL实例 OpenGL实例 OpenGL实例 OpenGL实例

    OpenGL实例 OpenGL实例 OpenGL实例 OpenGL实例 OpenGL实例

    opengl基本环境_base_gl.zip

    opengl基本环境_base_gl

    OpenGL教材 OpenGL教材 OpenGL教材

    OpenGL教材 OpenGL教材 OpenGL教材 OpenGL教材 OpenGL教材

    opengl+qt实现鼠标选中模型

    opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型opengl+qt实现鼠标选中模型...

    OpenGL教程之——OpenGL红宝书

    OpenGL教程之——OpenGL红宝书,是一份深入学习图形编程的重要资源,主要针对OpenGL这一广泛使用的图形库进行详细讲解。OpenGL是一种跨语言、跨平台的应用程序编程接口(API),用于渲染2D、3D矢量图形。它在游戏...

    OpenGL3.3_Instance_Base.rar

    OpenGL3.3_Instance_Base.rarOpenGL3.3_Instance_Base.rarOpenGL3.3_Instance_Base.rarOpenGL3.3_Instance_Base.rarOpenGL3.3_Instance_Base.rar

    opengl课件 opengl课件

    OpenGL是计算机图形学中的一种广泛应用的编程接口,用于在各种操作系统和硬件平台上创建二维和三维图形。这个"opengl课件"很可能包含了关于OpenGL的详细教程、实例代码、讲义和练习,适合初学者和进阶者深入理解并...

Global site tag (gtag.js) - Google Analytics