Delphi 아래 OpenGL2d 그림 의 선 그리 기 방법

2930 단어 DelphiOpenGL
1.머리말:
Delphi 가 선 을 그 리 는 방법 과 점 을 그 리 는 방법 은 기본적으로 같다.glBegin()의 매개 변 수 를 구별 합 니 다.그 려 진 프레임 코드 는 Delphi 아래 OpenGL2d 그림 초기 화 중인 코드 를 참고 할 수 있 으 며 주 소 는https://www.jb51.net/article/52141.htm입 니 다.수 정 된 부분 은 Draw 함수 의 내용 입 니 다.
2.라인 그리 기 단계:
GL_LINES:모든 정점 을 하나의 독립 된 선분 으로 하고 정점 2n-1 과 2n 사이 에 n 개의 선분 을 정의 하 며 모두 N/2 개의 선분 을 그립 니 다.
GL_LINE_STRIP:첫 번 째 정점 에서 마지막 정점 까지 순서대로 연 결 된 선분 을 그립 니 다.n 과 n+1 개의 정점 은 선분 n 을 정의 하고 모두 n-1 개의 선분 을 그립 니 다.
GL_LINE_LOOP:첫 번 째 정점 에서 마지막 정점 까지 차례대로 연 결 된 선분 을 그립 니 다.그리고 마지막 정점 은 첫 번 째 정점 과 연결 되 고 n 과 n+1 개의 정점 은 선분 n 을 정의 합 니 다.모두 n 개의 선분 을 그립 니 다.
선 을 그 을 때 다음 함수 가 사 용 될 수 있 습 니 다:
glLine Width()선 너비 설정
glShadeModel()색상 과도 모드 설정
glColor3f()선 색상 설정

procedure TForm1.Draw;
begin
  //
  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
  // ----------- GL_LINES -----------
  //
  glLineWidth(5);
  //
  glShadeModel(GL_SMOOTH);
  glBegin(GL_LINES);  //
  //
  glColor3f(1, 0, 0);
  //
  glVertex2f(50, 50);
  //
  glColor3f(0, 0, 1);
  //
  glVertex2f(200, 200);
  glEnd;
  //
  glShadeModel(GL_FLAT);
  glBegin(GL_LINES);
  glColor3f(0, 1, 0);
  glVertex2f(200, 50);
  glColor3f(1, 1, 0);
  glVertex2f(50, 200);
  glEnd;
  // ----------- GL_LINE_LOOP -----------
  //   glShadeModel(GL_SMOOTH);
  glLineWidth(1);
  glBegin(GL_LINE_LOOP);
  glColor3f(0, 0, 1);
  glVertex2f(250, 50);
  glVertex2f(250, 200);
  glVertex2f(280, 150);
  glEnd;
  // ----------- GL_LINE_STRIP -----------
  //     glShadeModel(GL_SMOOTH);
  glLineWidth(1);
  glBegin(GL_LINE_STRIP);
  glColor3f(1, 0, 255);
  glVertex2f(350, 50);
  glVertex2f(400, 200);
  glVertex2f(480, 150);
  glVertex2f(490, 60);
  glEnd;
  SwapBuffers(FDC); // , 。
end;
첫 번 째 X 라인 색상 이 그 라 데 이 션 된 것 을 볼 수 있 습 니 다.OpenGL 은 기본적으로 이 스타일 입 니 다.opengl 에 서 는 이러한 서로 다른 색상 의 상황 을 어떻게 처리 할 것 인 가 를 결정 하 는 함수 glShade Model 을 제공 합 니 다.

glShadeModel(GL_SMOOTH); //     ,   opengl       ,         
glShadeModel(GL_FLAT);  //     ,                ,       。        ,               

테스트 결과 GLLINE_LOOP 와 GLLINE_STRIP 스타일 에서 그 라 데 이 션 효과 가 유효 하지 않 습 니 다!구체 적 인 원인 은 좀 더 밝 혀 질 필요 가 있다.
또한 OpenGL 은 톱날 저항 기능 을 제공 합 니 다.함 수 는?

glEnable(GL_LINE_SMOOTH); //  
glHint(GL_LINE_SMOOTH,GL_NICEST);
glDisable(GL_LINE_SMOOTH); //  

사용 후 톱날 저항 효과 가 뚜렷 하지 않 음 을 발견 하 였 다.좀 더 연구 할 필요 가 있다.
전체 코드 점 여기다운로드 하 다.

좋은 웹페이지 즐겨찾기