簡體   English   中英

OpenGL 中的兩個三角形、線和邊框

[英]two triangles, line, and border in OpenGL

我很困惑如何制作兩個不相鄰的三角形(它們之間有間隙)以及一條線和一個邊框。 我已經完成了一個代碼,但由於某種原因,三角形和線條不會顯示,當我評論三角形和線條代碼時,只有邊框是顯示的。 三角形、線和邊框也有顏色,希望那個代碼是正確的。

您認為我的代碼有什么問題?

#include<GL/glut.h>
#include<iostream>

using namespace std;
void triangle();
void line();
void border();
void display();

int main(int argc, char** argv){
   glutInit(&argc, argv);
   glutCreateWindow("simple");
   glClearColor(1.0, 1.0, 0.0, 1.0);
   glutDisplayFunc(display);
   glutMainLoop();
}

void display(){
  glClear(GL_COLOR_BUFFER_BIT);
  triangle();
  line();
  border();
  glFlush();
}

void triangle() {
  glClear(GL_COLOR_BUFFER_BIT);
  glTranslatef(0.0f,0.0f,-4.0f);
    
  glBegin(GL_TRIANGLES);
    glColor3f(0.0f,0.0f,1.0f); glVertex2f(-1.0f,-0.25f);
    glColor3f(0.0f,0.0f,1.0f); glVertex2f(-0.5f,-0.25f);
    glColor3f(0.0f,0.0f,1.0f); glVertex2f(-0.75f,0.25f);

    glColor3f(0.0f,0.0f,1.0f); glVertex2f(0.5f,-0.25f);
    glColor3f(0.0f,0.0f,1.0f); glVertex2f(1.0f,-0.25f);
    glColor3f(0.0f,0.0f,1.0f); glVertex2f(0.75f,0.25f);
  glEnd();
  glFlush();
}

void line() {
  glClear(GL_COLOR_BUFFER_BIT);
  glLineWidth(5.0f);
  glBegin(GL_LINES);
    glColor3f(0.0, 0.0, 1.0); glVertex2f(-0.3, -0.3);
    glColor3f(0.0, 0.0, 1.0); glVertex2f(0.3, -0.3);
  glEnd();
  glFlush();
}

void border() {
  glClear(GL_COLOR_BUFFER_BIT);
  glLineWidth(7.0f);
  glBegin(GL_LINE_LOOP);
    glColor3f(0.0f, 0.0f, 0.0f);
    glVertex2f(-1, -1);
    glVertex2f(-1, 1);
    glVertex2f(1, 1);
    glVertex2f(1, -1);
  glEnd();
  glFlush();
}

問題是在繪制每個網格之前清除了顏色緩沖區。 這“清除”了先前的繪制網格。 display中繪制場景之前調用glClear(GL_COLOR_BUFFER_BIT)一次,但不要清除trianglelineborder中的顏色緩沖區。 只需從這些函數中刪除glClear(GL_COLOR_BUFFER_BIT)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM