當我添加着色器(在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