【问题标题】:draw diamond using OpenGL使用OpenGL绘制钻石
【发布时间】:2015-05-20 20:45:56
【问题描述】:

我试着画一颗钻石

我想要什么来了

http://i.stack.imgur.com/SP9vK.png

考虑红色部分。

我想要的是用这个公式画出钻石

point = (int *) malloc (sizeof (int) * n * 2) ;
w = 2 * pi / n;
wi = w / 2;
for (int i = 0; i <3; i ++ ) {

    point [i] = (int) (CX + R * cos (wi));
    point [i +1] = (int) (CY + R * sin (wi));
}

有什么想法吗?

【问题讨论】:

  • 你好像已经有了坐标,这时候你有什么烦恼?
  • 问题是当我运行代码时它会形成一个三角形。

标签: c++ opengl


【解决方案1】:

画图->

void drawLine (int x1, int y1, int x2, int y2) {
glBegin (GL_LINES);
glVertex2d (x1, y1);
glVertex2d (x2, y2);
glEnd();
glFlush();

}

第二个

  for (int i = 0; i <3; i ++) {
    for (int j = 0 ; j < 3; j ++) {
        drawLine (point [i], point [i +1], point [j], point [j +1]);
    }
}

先运行这个

point = (int *) malloc (sizeof (int) * n * 2) ;
w = 2 * pi / n;
wi = w / 2;
for (int i = 0; i <7; i ++ ) {

    point [i] = (int) (CX + R * cos (wi));
    point [i +1] = (int) (CY + R * sin (wi));


    printf("pointX = %d \n",(int)point[i]);
    printf("pointY = %d \n",(int)point[i+1]);




    wi += w;
}

【讨论】:

  • glFlush() 会导致这里毫无意义的减速,您应该将其移除。
  • 没有刷新不会出现什么
  • glFlush 每帧只需要调用一次。它不应包含在原始绘图过程中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多