OpenGL中运用CG时的矩阵转换问题
我写了一个小程序练习,功能很简单,只是用CG把所有的顶点都变成绿色,程序是这么写的:
void display()
{
float WorldViewMatrix[16];
float ProjectionMatrix[16];
...
///////////////////////////////
//// the code to set the camera
///////////////////////////////
glMatrixMode(GL_MODELVIEW);
glGetFloatv(GL_MODELVIEW_MATRIX,WorldViewMatrix);
glMatrixMode(GL_PROJECTION);
glGetFloatv(GL_PROJECTION_MATRIX,ProjectionMatrix);
cgSetMatrixParameterfr(cgp_WorldViewMatrix,WorldViewMatrix);
cgSetMatrixParameterfr(cgp_ProjectionMatrix,ProjectionMatrix);
cgUpdateProgramParameters(m_CGProgram);
...
}
CG 程序如下:
struct vOutPut{
float4 position : POSITION;
float4 color : COLOR;
};
vOutPut C2E1v_green(float3 position : POSITION ,const uniform float4x4 WorldView,const uniform float4x4 Projection)
{
vOutPut OUT;
OUT.position = mul(WorldView, float4(position.xyz, 1.0));
OUT.position = mul(Projection,OUT.position);
float dis = length(OUT.position);
OUT.color = float4(0.0,1.0,0.0,1.0);
return OUT;
}
但是渲染后的场景跟原来不用CG渲染的结果是不一样的,是不是矩阵有问题?
用glGetFloatv()函数获得的modelViewMatrix 和 projectionMatrix相乘得到的矩阵是worldViewProjection Matrix吗?