我是C++的新手,我在docs上工作的东西告诉我只看它没有解释任何东西,所以我试图破译它.
我来了一个函数的声明,但我不完全理解它.
只是第一个功能
我得到的部分是我没有得到的是在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;
Remy Lebeau.. 6
这是一个类构造函数.该类被命名hwPhongShaderOverrideMObject
,它源自MHWRender::MPxShaderOverride
,例如:
class hwPhongShaderOverrideMObject : public MHWRender::MPxShaderOverride { ... };
hwPhongShaderOverride(const MObject& obj)
指定此构造函数将一个参数作为输入,一个对MObject
实例的const引用.构造函数是在类声明本身内部声明和实现的,而不是与其声明分开实现.C++允许这两种方法.
介于两者之间的:
,并{
是初始化列表的构造函数.它初始化了班级成员.
:
开始初始化列表.
MHWRender::MPxShaderOverride(obj)
将输入对象传递给基类构造函数.必须始终首先构造基类.
, fShaderNode(NULL)
正在将fShaderNode
成员初始化为NULL.
, fTextureData(NULL)
正在将fTextureData
成员初始化为NULL.
依此类推,直到{
达到结束初始化列表.然后,在首先初始化类成员之后,像任何其他函数一样输入构造函数的主体.
这是一个类构造函数.该类被命名hwPhongShaderOverrideMObject
,它源自MHWRender::MPxShaderOverride
,例如:
class hwPhongShaderOverrideMObject : public MHWRender::MPxShaderOverride { ... };
hwPhongShaderOverride(const MObject& obj)
指定此构造函数将一个参数作为输入,一个对MObject
实例的const引用.构造函数是在类声明本身内部声明和实现的,而不是与其声明分开实现.C++允许这两种方法.
介于两者之间的:
,并{
是初始化列表的构造函数.它初始化了班级成员.
:
开始初始化列表.
MHWRender::MPxShaderOverride(obj)
将输入对象传递给基类构造函数.必须始终首先构造基类.
, fShaderNode(NULL)
正在将fShaderNode
成员初始化为NULL.
, fTextureData(NULL)
正在将fTextureData
成员初始化为NULL.
依此类推,直到{
达到结束初始化列表.然后,在首先初始化类成员之后,像任何其他函数一样输入构造函数的主体.