2015-01-29 8 views
1

선글래스를 사용하여 C#으로 선을 그 으려하고 있지만 코드를 컴파일하면 선이 아니라 흰색 선으로 전체를 제공합니다.이 문제를 해결하는 방법은 다음과 같습니다. 내 코드에 실수가있다. 코드가있다.sharpgl (C#)을 사용하여 선을 그리는 방법

private static int width = 400, height = 300; 
static void Main(string[] args) 
{ 

Glut.glutInit(); 
Glut.glutInitDisplayMode(Glut.GLUT_SINGLE | Glut.GLUT_RGB); 
Glut.glutInitWindowSize(width, height); 
Glut.glutCreateWindow("OpenGL Tutorial"); 

init(); 
Glut.glutDisplayFunc(OnDisplay); 
Glut.glutMainLoop(); 
} 
private static void OnDisplay() 
{ 
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT); 
Gl.glColor3f(0.0f, 0.4f, 0.2f); 
Gl.glBegin(Gl.GL_LINES); 

Gl.glVertex2i(180, 15); 
Gl.glVertex2i(10, 145); 
Gl.glEnd(); 
Gl.glFlush(); 
} 
static void init() 
{ 
Gl.glClearColor(1.0f, 1.0f, 1.0f, 0.0f); 
Gl.glMatrixMode(Gl.GL_PROJECTION); 
Gl.glOrtho(0.0, 200.0, 0.0, 1.0, -1.0, 1.0); 

} 
+0

은 선폭을 설정하려고;' – ben

답변

3

귀하의 라인이 완전히 보이는 좌표 범위 밖에 있습니다.

Gl.glOrtho(0.0, 200.0, 0.0, 1.0, -1.0, 1.0); 

이 호출의 3,4 파라미터 바닥 및 상부는, Y 좌표, 즉 범위를 정의 : glOrtho() 호출이 창문 직사각형에 맵핑되는 좌표의 범위를 지정한다. 따라서 y 좌표의 가시 범위는 [0.0, 1.0]이됩니다.

당신의 라인에 지정된 정점에서

: 두 정점이 범위를 벗어나 멀리

Gl.glVertex2i(180, 15); 
Gl.glVertex2i(10, 145); 

갖는 15의 y 좌표와 145

당신이 경우 라인을 볼 수 있어야합니다 당신 y 좌표의 범위를 확장합니다. 예를 들면, x 좌표와 동일한 범위를 사용하는`gl.LineWidth (3.0F)가 같은

Gl.glOrtho(0.0, 200.0, 0.0, 200.0, -1.0, 1.0); 
+0

좋은 캐치 잘 설명. – ben

+0

@Reto Koradi 고맙습니다. –