修改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 //这个不属于core
if( 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: