新3D渲染器今日进度(WIP),接管所有矩阵计算

2011年1月6日 由 admin 留言 »

《古月》新的3D渲染器将会提供固定管线与可编程管线两种版本,其中固定管线模式使用OpenGL兼容模式、可编程管线使用OpenGL核心模式。为了在最大程度将双版本的处理统一,我方使用了类似可编程管线中的手法:不再使用OpenGL/GLU所提供的矩阵管理与变换函数,固定管线仅在最后一刻设置GL_PROJECTION与GL_MODELVIEW矩阵并渲染。其中被接管的函数包括:gluPerspective、glOrtho/gluOrtho、glFrustum、gluLookAt、glPushMatrix、glPopMatrix等等。

见如下一段代码:
bool OpenGLCompatibilityRender::DirectRender(const glm::mat4 &ltw,Renderable *obj)
{
if(!obj)return(false);

ClearMatrix(GL_PROJECTION);
glLoadMatrixf(glm::value_ptr(projection_matrix));

ClearMatrix(GL_MODELVIEW);
glLoadMatrixf(glm::value_ptr(modelview_matrix*ltw));

/*//可以不设置PROJECTION,只在MODELVIEW里设置用以下方式
//ClearMatrix(GL_PROJECTION);
//ClearMatrix(GL_MODELVIEW);
//glLoadMatrixf(p);
//glMultMatrixf(m*ltw);
*/

bool result=DirectRender(obj);

ClearMatrix(GL_PROJECTION);
ClearMatrix(GL_MODELVIEW);

return(result);
}

广告位

发表回复

你必须 登陆 方可发表评论.
鄂ICP备09027626号