Delphi에서 OpenGL2d 드로잉의 선을 그리는 방법
Delphi는 점을 그리는 방법과 기본적으로 같다.glBegin()의 매개변수와 다릅니다.그려진 프레임 코드는 Delphi에서 OpenGL2d 드로잉 초기화 중인 코드를 참조할 수 있습니다.//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개의 선 세그먼트 GLLINE_LOOP: 첫 번째 정점에서 마지막 정점까지 차례대로 연결된 선분을 그리고 마지막 정점과 첫 번째 정점이 연결되며 n과 n+1 정점은 선분 n을 정의하여 총 n개의 선분을 그립니다
선을 그릴 때 사용할 수 있는 함수는 다음과 같습니다.
glLineWidth() 선 너비 설정 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은 기본적으로 이 스타일입니다.이 다른 색을 어떻게 처리하는지 결정하는 함수glShadeModel을 오픈gl에서 제공합니다.
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 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.