cocos2dx绘制填充矩形

2015年01月24日 09:52 0 点赞 0 评论 更新于 2025-11-21 15:18

在 Cocos2d-x 中,我们可以通过代码直接实现填充矩形的绘制。下面将详细介绍如何完成这一操作。

绘制填充矩形的代码实现

我们需要重写 draw 函数来实现绘制填充矩形的功能。以下是具体的代码示例:

void GameLayer1::draw(void)
{
// 调用父类的 draw 函数
CCLayer::draw();

// 启用线条抗锯齿
glEnable(GL_LINE_SMOOTH);
// 设置线条宽度为 1
glLineWidth(1);

// 定义矩形的四个顶点
CCPoint vertices[] = { ccp(100, 100), ccp(200, 100), ccp(200, 200), ccp(100, 200) };

// 禁用 2D 纹理
glDisable(GL_TEXTURE_2D);
// 禁用纹理坐标数组
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
// 禁用颜色数组
glDisableClientState(GL_COLOR_ARRAY);

// 设置填充颜色为红色(RGBA:255, 0, 0, 255)
glColor4ub(255, 0, 0, 255);
// 指定顶点数据
glVertexPointer(2, GL_FLOAT, 0, vertices);
// 绘制填充矩形,使用 GL_TRIANGLE_FAN 模式
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);

// 设置边框颜色为蓝色(RGBA:0, 0, 255, 255)
glColor4ub(0, 0, 255, 255);
// 再次指定顶点数据
glVertexPointer(2, GL_FLOAT, 0, vertices);
// 绘制矩形边框,使用 GL_LINE_LOOP 模式
glDrawArrays(GL_LINE_LOOP, 0, 4);

// 恢复默认状态
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_TEXTURE_2D);
}

代码解释

  1. 父类 draw 函数调用CCLayer::draw(); 调用父类的 draw 函数,确保父类的绘制逻辑正常执行。
  2. 线条抗锯齿和宽度设置
    • glEnable(GL_LINE_SMOOTH); 启用线条抗锯齿,使线条更加平滑。
    • glLineWidth(1); 设置线条宽度为 1。
  3. 顶点定义CCPoint vertices[] = { ccp(100, 100), ccp(200, 100), ccp(200, 200), ccp(100, 200) }; 定义了矩形的四个顶点。
  4. 纹理和颜色数组禁用
    • glDisable(GL_TEXTURE_2D); 禁用 2D 纹理。
    • glDisableClientState(GL_TEXTURE_COORD_ARRAY); 禁用纹理坐标数组。
    • glDisableClientState(GL_COLOR_ARRAY); 禁用颜色数组。
  5. 填充矩形绘制
    • glColor4ub(255, 0, 0, 255); 设置填充颜色为红色。
    • glVertexPointer(2, GL_FLOAT, 0, vertices); 指定顶点数据。
    • glDrawArrays(GL_TRIANGLE_FAN, 0, 4); 使用 GL_TRIANGLE_FAN 模式绘制填充矩形。
  6. 矩形边框绘制
    • glColor4ub(0, 0, 255, 255); 设置边框颜色为蓝色。
    • glVertexPointer(2, GL_FLOAT, 0, vertices); 再次指定顶点数据。
    • glDrawArrays(GL_LINE_LOOP, 0, 4); 使用 GL_LINE_LOOP 模式绘制矩形边框。
  7. 状态恢复
    • glEnableClientState(GL_COLOR_ARRAY); 启用颜色数组。
    • glEnableClientState(GL_TEXTURE_COORD_ARRAY); 启用纹理坐标数组。
    • glEnable(GL_TEXTURE_2D); 启用 2D 纹理,恢复默认状态。

通过重写上述 draw 函数,就可以在 Cocos2d-x 中实现填充矩形的绘制。

作者信息

feifeila

feifeila

共发布了 3994 篇文章