Delphi 아래 OpenGL2d 그림 의 선 그리 기 방법
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); //
사용 후 톱날 저항 효과 가 뚜렷 하지 않 음 을 발견 하 였 다.좀 더 연구 할 필요 가 있다.전체 코드 점 여기다운로드 하 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Delphi] TStringBuilder그리고 꼭 사용해야만 할까? 그림처럼 Heap 영역에 "Hello" 공간을 생성하고 포인팅을 한다. "Hello World" 공간을 새로 생성한 후 포인팅을 하게 된다. 결국 "Hello" 라는 String 객체가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.