Cg中有一个Bug,就是当你用运行库函数cgGLSetStateMatrixParameter来传送MODELVIEW矩阵时,所绘制的物体就会变大,而且会从原点发生位置偏移。我现在用的是Cg 1.4,这个Bug还存在。所以建议使用arbvp1 Profile,通过它的“glstate”结构来访问MODELVIEW矩阵(如glstate.matrix.mvp)。
在Cg程序中把position = mul( modelViewProj, v );改为position = mul( glstate.matrix.mvp, v );
只要与MODELVIEW矩阵有关的都要这样改,比如modelViewInv改为glstate.matrix.invtrans.modelview[0]。
下面是一些常用的glstate结构域:
glstate.matrix.modelview[n]: modelview matrix n
glstate.matrix.mvp:modelview-projection matrix
glstate.matrix.projection :projection matrix
glstate.matrix.texture[n] :texture matrix n
glstate.matrix.palette[n]:palette matrix n
glstate.matrix.program[n]:program matrix n
glstate.matrix.inverse.mvp:modelview-projection inverse matrix
这里只列举了一部分,详情请参阅《Cg User Manual》。
博客指出Cg 1.4存在Bug,使用cgGLSetStateMatrixParameter传送MODELVIEW矩阵时,绘制物体变大且位置偏移。建议使用arbvp1 Profile,通过“glstate”结构访问MODELVIEW矩阵,并给出代码修改示例,还列举了部分常用的glstate结构域。
4481

被折叠的 条评论
为什么被折叠?



