2012-10-10 3 views
0

glmxLoadPerspective 함수를 사용하려고 할 때마다 아무 것도 표시되지 않습니다. 그러나 glmxLoadOrtho 함수는 정상적으로 표시됩니다. 내 수학이 틀렸어?내 관점 수학이 잘못 되었습니까?

(APP_WIDTH = 1000 APP_HEIGHT = 1000)

용도 :

glmxMatrix ortho; 
glmxGenMatrix(&ortho, GLMX_4X4); //This simply loads the identity matrix. 
glmxLoadPerspective(&ortho, 45.0f, APP_WIDTH/APP_HEIGHT, 1.0f, 10.0f); //Implementation below. 

glmxMatrix modelview; 
glmxGenMatrix(&modelview, GLMX_4X4); //Same as above. 

const GLfloat verts[] = { 
    //verts 
    100.0f, 100.0f, -3.0f, 1.0f, 
    200.0f, 200.0f, -3.0f, 1.0f, 
    100.0f, 200.0f, -3.0f, 1.0f, 
    200.0f, 100.0f, -3.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, 
}; 

glmxMultMatrix(&ortho, &modelview); 

절두체 FUNC :

glmxvoid glmxLoadFrustrum(glmxMatrix* matrix, glmxfloat left, glmxfloat right, glmxfloat bottom, 
    glmxfloat top, glmxfloat near, glmxfloat far){ 
if(matrix -> mx_type != GLMX_4X4){GLMX_ERROR = GLMX_NOT_4X4; return;} 
matrix -> mx_data[0] = (2.0f * near)/(right - left); 
matrix -> mx_data[1] = 0.0f; 
matrix -> mx_data[2] = 0.0f; 
matrix -> mx_data[3] = 0.0f; 
matrix -> mx_data[4] = 0.0f; 
matrix -> mx_data[5] = (2.0f * near)/(top - bottom); 
matrix -> mx_data[6] = 0.0f; 
matrix -> mx_data[7] = 0.0f; 
matrix -> mx_data[8] = (right + left)/(right - left); 
matrix -> mx_data[9] = (top + bottom)/(top - bottom); 
matrix -> mx_data[10] = (-far - near)/(far - near); 
matrix -> mx_data[11] = -1.0f; 
matrix -> mx_data[12] = 0.0f; 
matrix -> mx_data[13] = 0.0f; 
matrix -> mx_data[14] = -(2.0f * near) * far/(far - near); 
matrix -> mx_data[15] = 0.0f; 
} 

관점 FUNC :

아래 관련 코드 (무관 비트 절단)
glmxvoid glmxLoadPerspective(glmxMatrix* matrix, glmxfloat fovy, glmxfloat aspect, glmxfloat near, 
    glmxfloat far){ 
glmxfloat ymax = near * tanf(fovy * GLMX_PI/360.0f), xmax = ymax * aspect; 
glmxLoadFrustrum(matrix, -xmax, xmax, -ymax, ymax, near, far); 
} 

답변

0

제가 볼 수있는 한, x, y 비대칭 오프셋 (8과 9)을 제 3 열에 넣었습니다. 이는 z로 곱 해짐을 의미합니다. 8,9가 12와 13으로 이동해야한다고 생각합니다.

관련 문제