| |
|
| Gast
Beiträge: n/a
|
des check ich jetzt nicht ^^, d.h. entweder hast du ihm jetzt geholfen oder meinst du das mit den vielen klammern hat er von dir ? aber gut das ich helfen konnte =) deinen xqz kannst du noch verbessern indem du ein bool in glshademodel(if(mode == GL_SMOOTH)) //model wird gezichnet auf true setzt und in glpopmatrix auf false und beim false setzen noch glenable(gl_depth_test) einfuegst und in glbegin nach dem bool fragst und dann gldisable(gl_depth_test) nutzt. das sollte dann ungefaehr so aussehen: Code: typedef struct{
bool xqz;
}cvar_s
typedef struct{
bool xqz;
}draw_s;
cvar_s cvar;
draw_s draw;
void sys_glBegin(GLenum mode)
{
if((cvar.xqz && draw.xqz) && (mode == GL_TRIANGLE_STRIP || mode == GL_TRIANGLE_FAN))
{
(*orig_glDisable)(GL_DEPTH_TEST);
}
(*orig_glBegin)(mode);
}
void sys_glShadeModel(GLenum mode)
{
if(cvar.xqz)
{
draw.xqz = true;
}
(*orig_glShadeModel)(mode);
}
void sys_glPopMatrix(void)
{
if(cvar.xqz && draw.xqz)
{
draw.xqz = false;
(*orig_glEnable)(GL_DEPTH_TEST);
}
(*orig_glPopMatrix)();
} Code: typedef struct{
bool asus;
bool wire;
}cvar_s;
cvar_s cvar;
void sys_glBegin(GLenum mode)
{
if(cvar.asus)
{
if(mode == GL_POLYGON)
{
float curcolor[4];
(*orig_glGetFloatv)(GL_CURRENT_COLOR,curcolor);
(*orig_glDisable)(GL_DEPTH_TEST);
(*orig_glEnable)(GL_BLEND);
(*orig_glBlendFunc)(GL_SRC_ALPHA,GL_ZERO);
(*orig_glColor4f)(curcolor[0],curcolor[1],curcolor[2],0.5f);
}
else if((mode == GL_TRIANGLE_STRIP) || (mode == GL_TRIANGLE_FAN))
{
(*orig_glEnable)(GL_DEPTH_TEST);
(*orig_glDisable)(GL_BLEND);
}
}
if(cvar.wire)
{
if(mode == GL_POLYGON)
{
(*orig_glPolygonMode)(GL_FRONT_AND_BACK,GL_LINE);
(*orig_glLineWidth)(1.0f); // dicke der lines
(*orig_glColor3f)(1.0f,0.0f,0.0f); // roter wireframe mode
}
else if(mode == GL_TRIANGLE_STRIP || mode == GL_TRIANGLE_FAN);
{
(*orig_glPolygonMode)(GL_FRONT_AND_BACK,GL_FILL);
}
}
(*orig_glBegin)(mode);
} |
|
| |
![]() |
| |