修改Ogre高级材质系统,增加线宽,点大小,虚线模式,虚线参数的支持,效果如下:
需要修改的代码文件如下:
修改如下
代码文本:
//范围[0.2 - 51] 0.2 * [0,255];Ogre::uint8 mLineWidth;//范围[0.5 - 127.5] 0.5 * [0, 255];Ogre::uint8 mPointSize;//虚线标记Ogre::uint16 mLineStrip; //虚线重复因子Ogre::uint8 mLineRepatFactor; //glLineStipple(repatFactor, lineStrip) glLineStipple(1, 0x0F0F)//是否虚线模式bool mEnableLineStipple; // Ogre::uint8 // glEnalbe( GL_LINE_STIPPLE )
mPolygonMode != _r.mPolygonMode || mLineWidth != _r.mLineWidth ||mPointSize != _r.mPointSize ||mLineStrip != _r.mLineStrip ||mLineRepatFactor != _r.mLineRepatFactor ||mEnableLineStipple != _r.mEnableLineStipple;
修改文件:
代码文本:
mPolygonMode( PM_SOLID ),mLineWidth(5),mPointSize(2),mLineStrip(0xFFFF),mLineRepatFactor(1),mEnableLineStipple(false)
修改文件:
代码文本:
PFNGLLINESTRIPPLEPROC LineStripple;#define glLineStipple gl3wProcs.gl.LineStripple
修改文件:
代码文本:
// add ext func
typedef void( APIENTRYP PFNGLLINESTRIPPLEPROC )( GLint factor, GLushort pattern );
修改文件:
对结构体修改的重命名不需要,测试影响范围才改的。
代码文本如下:
float lineWidth;float pointSize;bool enableLineStipple;//GLshort lineStrip;//GLshort lineRepeatFactor;//bool enablePointSmooth;
修改文件:
代码文本如下:
pso->lineWidth = newBlock->macroblock->mLineWidth * 0.2f;pso->pointSize = newBlock->macroblock->mPointSize * 0.5f;pso->enableLineStipple = newBlock->macroblock->mEnableLineStipple;// GLshort lineStrip;// GLshort lineRepeatFactor;// bool enablePointSmooth;switch( macroblock->mPolygonMode )
{case PM_POINTS:OCGE( glPointSize( pso->pointSize));break;case PM_WIREFRAME:glLineWidth( pso->lineWidth );#define GL_LINE_STIPPLE 0x0B24 //这个不属于coreif( macroblock->mEnableLineStipple ){ OCGE( glEnable( GL_LINE_STIPPLE ) );if( glLineStipple )OCGE( glLineStipple( macroblock->mLineRepatFactor, macroblock->mLineStrip ) );}else{OCGE( glDisable( GL_LINE_STIPPLE ) );}break;// case PM_SOLID:default: break;
}
修改文件:
代码文本如下:
"glLineStipple",
支持解析材质json: