2014-10-03 4 views
1

OpenGL을 사용하여 흰색 배경에 빨간색 구를 그리려합니다. 여기 내 코드에서 구체를 그려야하는 부분이 있습니다. 주 진입 점의흰색 배경에 구체 그리기 (C++ 및 OpenGL)

부분 :

initialise(); 
glutDisplayFunc(draw_Sphere); 
glEnable(GL_DEPTH_TEST); 
glutMainLoop(); 

초기화 : 내가 뭘 잘못이야 아무 생각이

void draw_Sphere() 
{ 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 
    glTranslatef(200, 200, 0); 
    glColor3f(1.0, 0.0, 0.0); 
    glPushMatrix(); 
    glutSolidSphere(0.25, 20, 20); 
    glPopMatrix(); 
    glutSwapBuffers(); 
} 

하지만,이 원 '

void initialise() 
{ 
    glClearColor(1.0f, 1.0f, 1.0f, 1.0f); 
    glClearDepth(1.0f); 
    glEnable(GL_DEPTH_TEST); 
    glEnable(GL_COLOR_MATERIAL); 
    glEnable(GL_LIGHTING); 
    glDepthFunc(GL_LEQUAL); 
    glShadeModel(GL_SMOOTH); 
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); 
} 

는 영역을 그리기 구체를 렌더링하지 않습니다 (그러나 흰색 배경을 그립니다). 그것을 고칠 어떤 제안?

+2

몇 가지 생각 : GL_LIGHTING을 사용하는 것으로 보이지만 조명 설정이 표시되지 않습니다. 당신은 X와 Y에서 glTranslatef를하지만 Z에서는 그렇지 않습니다. 그러나 기본 카메라가 Z 축을 따라보고 있기 때문에 X와 Y를 0으로 만들고 Z를 변환해야한다고 생각합니다. 나는 Z가 양수인지 음수인지를 잊어 버린다. 다음으로 glutSolidSphere를 호출 할 때 행렬을 밀거나 팝 할 필요가 없습니다. 기본 카메라 매트릭스를 사용합니다. 셋업을 올바르게하는 튜토리얼을 시작한 다음 glutSolidSphere에 콜을 추가하는 것이 좋습니다. Try http://nehe.gamedev.net/tutorial/lessons_01__05/22004/ –

답변

2

매트릭스 사용

적절한 모델, 뷰 및 프로젝션 매트릭스를 설정하는 것이 좋습니다. 그러면 당신은 당신이 보는 것에 더 많은 통제권을 갖게 될 것입니다.

솔루션

드롭 당신이 절두체 밖으로 영역을 받고 이와 같은 glTranslatef(200, 200, 0); 라인. 그리고 여러분은 구를보아야합니다.

관련 문제