18.06.2004, 01:52 | - 6 |
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); } |
|
Werbung | |
|
--
|
| |