-1

私はC ++を初めて使用し、ドキュメントに取り組んでいることは、コード例を見るように教えてくれますが、それは何も説明していないので、解読しようとしています。

この関数の宣言に出くわしましたが、完全には理解していません。

最初の関数だけ

MHWRender::MPxShaderOverride(obj) の後に得られない部分の下にあるものを取得し、引数のリストとして開始します (または、その名前がわかりません)

そして、指定された入力がどこにあるのかを推測します。

繰り返しますが、これが何をしているのかわからないので、説明する方法が少しわかりません。

完全なコードは、http: //help.autodesk.com/view/MAYAUL/2016/ENU/?guid=__cpp_ref_hw_phong_shader_2hw_phong_shader_8cpp_example_htmlにあります。

    hwPhongShaderOverride(const MObject& obj)
: MHWRender::MPxShaderOverride(obj)
, fShaderNode(NULL)
, fTextureData(NULL)
, fDrawUsingShader(true) // Disabling this will use fixed-function which only has an OpenGL implementation
, fShaderBound(false)
, fTexture(NULL)
, fInColorPass(false)
, fColorShaderInstance(NULL)
, fInShadowPass(false)
, fShadowShaderInstance(NULL)
, fTransparency(0.0f)
{
    // Create a shader instance to use for drawing
    //
    if (fDrawUsingShader)
    {
        createShaderInstance();
    }
    fAmbient[0] = fAmbient[1] = fAmbient[2] = 0.0f;
    fDiffuse[0] = fDiffuse[1] = fDiffuse[2] = fDiffuse[3] = 0.0f;
    fSpecular[0] = fSpecular[1] = fSpecular[2] = 0.0f;
    fShininess[0] = fShininess[1] = fShininess[2] = 500.0f;
}

// override blend state when there is blending
static const MHWRender::MBlendState *sBlendState;

// Current hwPhongShader node associated with the shader override.
// Updated during doDG() time.
hwPhongShader *fShaderNode;
// Shader inputs values including transparency
float fTransparency;
float fAmbient[3];
float fDiffuse[4];
float fSpecular[3];
float fShininess[3];

// Temporary system buffer for creating textures
unsigned char* fTextureData;

// Pass tracking
bool fInColorPass;
bool fInShadowPass;

// Draw with texture or shader flag
bool fDrawUsingShader;
// VP2 texture
MHWRender::MTexture *fTexture;
// VP2 color shader
MHWRender::MShaderInstance *fColorShaderInstance;
// VP2 shadow shader
MHWRender::MShaderInstance *fShadowShaderInstance;
mutable bool fShaderBound;
4

2 に答える 2