the object is on the line when camera is near as shown below (2 screenshots):
Screenshot #1
Screenshot #2
when i move the moves back the object is like goes away from the line:
Screenshot #3
I think the problem is projection matrix. Here is the source:
void Viewport::Perspective(real fov, uint w, uint h, real n, real f) {
real range = Math::cot(Math::deg2rad(fov / 2));
real aspect = (real) w / h;
projectionMatrix.row[0] = range / aspect;
projectionMatrix.row[5] = range;
projectionMatrix.row[10] = (f + n) / (n - f);
projectionMatrix.row[11] = (2 * n * f) / (n - f);
projectionMatrix.row[14] = -1;
}
void Prerequisites() {
currentCamera = &cameras[current];
cameras[0].setPosition(Vector3(0, 1.5f, 7.0f), Vector3(1.0f, 1.0f, 0.0f));
viewport.Perspective(60.0f, 640, 480, 1, 10.0f);
}
void Render() {
currentCamera->Look();
modelviewprojection = viewport.getProjectionMatrix() * currentCamera->getModelViewMatrix();
GPUProgramManager::Instance().BindProgram("helloworld.gpu");
GPUProgramManager::Instance().setUniformMatrix("helloworld.gpu", "modelViewProjection", modelviewprojection.row);
box->draw(); //just skipped that part because it drew correctly when used to use gluPerspective
GPUProgramManager::Instance().UnbindProgram();
//floor draw, octree bounds draw
}
and here is the shader:
[VertexShader]
#version 130
in vec3 POSITION;
uniform mat4 modelViewProjection;
void main() {
gl_Position = modelViewProjection * vec4(POSITION, 1.0);
}
[FragmentShader]
#version 130
out vec4 myfragcolor;
void main() {
myfragcolor = vec4(0.0, 0.0, 0.0, 1.0);
}
Please Help!
Thanks,
Kasya