2012-10-13 1 views
0

OpenGL에서 렌더링 할 때 문제가 있습니다. Z 좌표를 변경할 때까지 모든 것이 잘 표시됩니다. 잘린 상태입니다. 그게 무슨 일 이니? 원근법 투영 행렬을 잘못 설정하고 있습니까? 나는 곤란하다 ...Z 좌표 (OpenGL)를 변경할 때 객체가 표시되지 않습니까?

내 렌더링 코드의 관련 비트들 (mat4_ funcs는 외부 라이브러리이며 GL 친구들과 유사 함).

vec3_t eyevec = vec3_create(NULL); 
eyevec[0] = 0.0f; 
eyevec[1] = 0.0f; 
eyevec[2] = 0.1f; 
vec3_t centervec = vec3_create(NULL); 
centervec[0] = 0.0f; 
centervec[1] = 0.0f; 
centervec[2] = 0.0f; 
vec3_t upvec = vec3_create(NULL); 
upvec[0] = 0.0f; 
upvec[1] = 1.0f; 
upvec[2] = 0.0f; 

vec3_t transvec = vec3_create(NULL); 
transvec[0] = 0.0f; 
transvec[1] = 0.0f; 
transvec[2] = -2.0f; 

mat4_t perspective = mat4_perspective(60.0f, 800.0f/600.0f, 0.1f, 100.0f, NULL); 
mat4_lookAt(eyevec, centervec, upvec, perspective); 

mat4_t modelview = mat4_identity(NULL); 
//mat4_translate(modelview, transvec, modelview); objects vanish when doing this! 
mat4_multiply(perspective, modelview, perspective); 

const GLfloat verts[] = { 
    //verts 
    0.0f, 0.0f, 0.0f, 1.0f, 
    0.0f, 0.5f, 0.0f, 1.0f, 
    0.5f, 0.5f, 0.0f, 1.0f, 
    0.5f, 0.0f, 0.0f, 1.0f, 
    //colors 
    1.0f, 0.3f, 0.4f, 0.5f, 
    0.5f, 0.1f, 0.4f, 0.3f, 
    0.0f, 1.0f, 0.5f, 0.6f, 
    0.0f, 1.0f, 0.5f, 0.6f, 
    //tex coords 
    0.0f, 0.0f, 
    0.0f, 1.0f, 
    1.0f, 1.0f, 
    1.0f, 0.0f, 
}; 

const GLushort indices[] = {3, 0, 2, 0, 2, 1}; 

    glDrawElements(GL_TRIANGLE_STRIP, 6, GL_UNSIGNED_SHORT, NULL); 

또한 양수 및 음수 방향으로 번역을 시도했습니다.

+0

/에서 무엇을 변경하나요? – Tim

+0

'near/far'범위를 확인하십시오. –

+0

@mihai maruseac : mat4_perspective (60.0f, 800.0f/600.0f, 0.1f, 100.0f, NULL); 0.1f에 가까운 것을 설정하고 100.0f에 먼 것을 설정합니다. – Shokwav

답변

0

당신이 언급 한 near는 0.1f이고, 번역하는 동안 z : transvec [2]는 -2.0f로 설정됩니다.

그래서 그것은 가까운 평면 앞에 있으며, 그것은 그것이 세계 공간에서 당신의 눈 뒤에 렌더링된다는 것을 의미합니다.

이것은 왜 사라지는 것처럼 보입니다.

+0

하지만이 값이 양수 또는 음수로 설정되면 사라집니다. – Shokwav

+1

@Shokwav 저는 항상 내 관점을 다음과 같이 설정했습니다 : viewFrustum.SetPerspective (35.0f, float (len)/float (wide), 1, 5000) – Anubha

관련 문제