cocos2dx 怎么画矩形

2015年03月02日 14:12 0 点赞 0 评论 更新于 2025-11-21 16:33

在 cocos2dx 中,要画一个矩形,下面将为你详细介绍实现方法及代码。

实现思路

我们需要重写 draw 函数,在该函数中进行 OpenGL 的相关操作来绘制矩形。具体步骤包括设置线条平滑、定义矩形顶点、禁用纹理和颜色数组、设置颜色、绘制填充矩形和矩形边框,最后恢复默认状态。

示例代码

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);

// 设置填充矩形的颜色为红色
glColor4ub(255, 0, 0, 255);
// 设置顶点指针
glVertexPointer(2, GL_FLOAT, 0, vertices);
// 绘制填充矩形
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);

// 设置矩形边框的颜色为蓝色
glColor4ub(0, 0, 255, 255);
// 再次设置顶点指针
glVertexPointer(2, GL_FLOAT, 0, vertices);
// 绘制矩形边框
glDrawArrays(GL_LINE_LOOP, 0, 4);

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

代码解释

  1. CCLayer::draw():调用父类的 draw 函数,确保父类的绘制逻辑正常执行。
  2. glEnable(GL_LINE_SMOOTH)glLineWidth(1):启用线条平滑效果,并设置线条宽度为 1。
  3. CCPoint vertices[]:定义矩形的四个顶点坐标。
  4. glDisable 系列函数:禁用 2D 纹理、纹理坐标数组和颜色数组,以便进行纯图形绘制。
  5. glColor4ub:设置绘制图形的颜色,这里分别设置填充矩形为红色,边框为蓝色。
  6. glVertexPointer:设置顶点指针,指定顶点数据的格式和位置。
  7. glDrawArrays:根据指定的绘制模式(GL_TRIANGLE_FAN 用于绘制填充矩形,GL_LINE_LOOP 用于绘制矩形边框)和顶点数据进行绘制。
  8. 恢复默认状态:使用 glEnableglEnableClientState 函数恢复纹理和颜色数组的使用。

总结

通过重写 draw 函数并按照上述步骤进行 OpenGL 操作,就可以在 cocos2dx 中成功绘制矩形。你可以根据需要调整顶点坐标和颜色,实现不同位置和颜色的矩形绘制。

作者信息

boke

boke

共发布了 3994 篇文章