当我添加着色器(在cg中)到我的opengl程序中时,所有局部转换(glRushatef,glTranslatef和glScalef在glPushMatrix和glPopMatrix之间)停止工作。转换外推/流行仍然工作。那么这里可能是什么问题?着色器和opengl转换
更新: 我在场景的中心旋转的立方体:
glPushMatrix();
glRotatef(angle, 1, 0, 0);
drawBox();
glPopMatrix();
之后,我发的世界观和worldviewprojection矩阵着色器:
cgGLSetStateMatrixParameter(
myCgVertexParam_modelViewProj,
CG_GL_MODELVIEW_PROJECTION_MATRIX,
CG_GL_MATRIX_IDENTITY
);
cgGLSetStateMatrixParameter(
myCgVertexParam_modelView,
CG_GL_MODELVIEW_MATRIX,
CG_GL_MATRIX_IDENTITY
);
顶点着色器代码:
void C9E2v_fog(float4 position : POSITION,
float4 color : COLOR,
out float4 oPosition : POSITION,
out float4 oColor : COLOR,
out float fogExponent : TEXCOORD1,
uniform float fogDensity, // Based on log2
uniform float4x4 modelViewProj : MODELVIEW_PROJECTION_MATRIX,
uniform float4x4 modelView : MODELVIEW_MATRIX)
{
// Assume nonprojective modelview matrix
float3 eyePosition = mul(modelView, position).xyz;
float fogDistance = length(eyePosition);
fogExponent = fogDistance * fogDensity;
oPosition = mul(modelViewProj, position);
//oDecalCoords = decalCoords;
oColor = color;
}
所以最后立方体不旋转,但如果我做写(没有推/弹出)
glRotatef(angle, 1, 0, 0);
drawBox();
一切工作正常。我如何解决这个问题?
您能否详细说明“停止工作”?指定预期的输出和实际的输出...一些示例代码也不会有问题。 – LarsH 2010-11-09 10:46:30
我更新了主帖,请检查一下 – spacevillain 2010-11-09 13:21:24