0
我是一個新的透視分割現象。OpenGL中的透視投影矩陣
void MatrixPersp(Mat4& matrix,const float fovy, const float aspect, const float zNear, const float zFar)
{
float sine, cotangent, deltaZ;
float radians;
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
{
if(i==j)
matrix[i][j]=1.0;
else
matrix[i][j]=0.0;
}
radians = fovy/2 * GLES_Pi/180;
deltaZ = zFar - zNear;
sine = (float) sin(radians);
cotangent = (float) cos(radians)/sine;
matrix[0][0] = cotangent/aspect;
matrix[1][1] = cotangent;
matrix[2][2] = -(zFar + zNear)/deltaZ;
matrix[2][3] = -1;
matrix[3][2] = -2 * zNear * zFar/deltaZ;
matrix[3][3] = 0;
return;
}
void Render()
{
GLfloat vertices[] =
{
-0.8,0.6,1.0,1.0,
-0.8,0.2,1.0,1.0,
0.2,0.2,1.0,1.0,
0.2,0.6,1.0,1.0
};
MatrixPersp(perspective,90.0,aspect,2.0,100.0);
glUniformMatrix4fv(glGetUniformLocation(program_object,"MVPMatrix"), 1, GL_FALSE, (GLfloat*)perspective);
glClearDepth(1.0f);
glClear(GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glDrawElements();
}
頂點着色引擎是:我使用下面的代碼在三維空間繪製一個簡單的方形
#version 150
in vec4 position;
uniform mat4 MVPMatrix;
void main()
{
gl_Position = position*MVPMatrix;
}
這裏的問題是,當所有的四個頂點具有相同的Z - 值什麼都沒有呈現。另一方面,如果兩個頂點具有-1作爲z座標,則投影矩陣可以正常工作。 我不確定這裏發生了什麼問題。
:試過右邊的位置。沒有成功。 – maverick9888 2013-04-24 12:01:54
@ maverick9888某些東西還是應該改變的。 *相同*錯誤是否發生,或者是否發生了新的事情? – Hydronium 2013-04-24 12:52:33
@Hydronium:不幸的是,着色器編譯沒有錯誤。沒有新的事情發生:-( – maverick9888 2013-04-25 08:29:13