【问题标题】:Why do not draw line in openGL?为什么不在 openGL 中画线?
【发布时间】:2023-01-08 01:07:41
【问题描述】:
GLfloat vertices[NUM_VERTICES][3] = {
    
{ -0.5, -0.4, 0.0 },
    {  0.5, -0.4, 0.0 },
    {  0.5,  0.4, 0.0 },
    {  0.0,  0.8, 0.0 },
    { -0.5,  0.4, 0.0 }
};
void init() {
  glClearColor(0.0, 0.0, 0.0, 0.0);
  glShadeModel(GL_FLAT);
}

void display() {
  glClear(GL_COLOR_BUFFER_BIT);
  glBegin(GL_POLYGON);
  for (int i = 0; i < NUM_VERTICES; i++) {
    
    glColor3fv(colors[i]);
    glVertex3fv(vertices[i]);
    }
  glEnd();
  glutSwapBuffers();
  glClear(GL_COLOR_BUFFER_BIT);
  //glClearColor(0.0, 0.0, 0.0, 0.0);
  glShadeModel(GL_FLAT);
  glColor3ub(1.0, 1.0, 1.0);        
  glLineWidth(10);
  glBegin(GL_LINES);
  glVertex2f(0.0, -0.4); 
  glVertex2f(0.0, 0.8); 
  glEnd();
}

我用 OpenGL 画了一个五边形。我想在五边形内部从一点到另一点画一条线,但它不起作用。如何工作?

【问题讨论】:

    标签: c++ opengl


    【解决方案1】:

    glClear 清除整个帧缓冲区,必须在绘制所有几何图形之前调用一次。如果你在中间调用它,所有以前的图纸将被清除。 glutSwapBuffers() 交换缓冲区并更新显示,必须在绘制场景中的所有对象后调用:

    void display() {
      glClear(GL_COLOR_BUFFER_BIT);
    
      glBegin(GL_POLYGON);
      for (int i = 0; i < NUM_VERTICES; i++) {    
        glColor3fv(colors[i]);
        glVertex3fv(vertices[i]);
      }
      glEnd();
      
      glColor3ub(1.0, 1.0, 1.0);        
      glLineWidth(10);
      glBegin(GL_LINES);
      glVertex2f(0.0, -0.4); 
      glVertex2f(0.0, 0.8); 
      glEnd();
    
      glutSwapBuffers();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-21
      • 1970-01-01
      • 2014-08-14
      • 2019-12-12
      • 1970-01-01
      • 1970-01-01
      • 2022-07-12
      • 1970-01-01
      相关资源
      最近更新 更多