/* multipass, use texture to make highlight */ void redraw_tex(void) { if(lightchanged[UPDATE_TEX]) { makeHighlight(128); lightchanged[UPDATE_TEX] = GL_FALSE; } if(lightchanged[UPDATE_OGL]) { glLightfv(GL_LIGHT0, GL_POSITION, lightpos); lightchanged[UPDATE_OGL] = GL_FALSE; } glPushMatrix(); /* assuming modelview */ glTranslatef(objpos[X], objpos[Y], 0.f); /* translate object */ glRotatef(objangle[X], 0.f, 1.f, 0.f); /* rotate object */ glRotatef(objangle[Y], 1.f, 0.f, 0.f); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); /* draw the diffuse portion of the light */ glEnable(GL_LIGHTING); glBindTexture(GL_TEXTURE_2D, SURF_TEX); if(notex) glDisable(GL_TEXTURE_2D); glCallList(object); if(notex) glEnable(GL_TEXTURE_2D); glDisable(GL_LIGHTING); /* draw the specular highlight */ glEnable(GL_BLEND); glBindTexture(GL_TEXTURE_2D, HIGHLIGHT_TEX); glEnable(GL_TEXTURE_GEN_S); glEnable(GL_TEXTURE_GEN_T); glDepthFunc(GL_LEQUAL); glCallList(object); glDepthFunc(GL_LESS); glDisable(GL_TEXTURE_GEN_S); glDisable(GL_TEXTURE_GEN_T); glDisable(GL_BLEND); glPopMatrix(); /* assuming modelview */ CHECK_ERROR("OpenGL Error in redraw_tex()"); if(dblbuf) glutSwapBuffers(); else glFlush(); }
/* show highlight texture map */ void redraw_map(void) { if(lightchanged[UPDATE_TEX]) { makeHighlight(128); lightchanged[UPDATE_TEX] = GL_FALSE; } glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); glBindTexture(GL_TEXTURE_2D, HIGHLIGHT_TEX); glDisable(GL_LIGHTING); glBegin(GL_QUADS); glTexCoord2i(0, 0); glVertex2i(-1, -1); glTexCoord2i(1, 0); glVertex2i(1, -1); glTexCoord2i(1, 1); glVertex2i(1, 1); glTexCoord2i(0, 1); glVertex2i(-1, 1); glEnd(); glEnable(GL_LIGHTING); glPopMatrix(); glMatrixMode(GL_MODELVIEW); glPopMatrix(); CHECK_ERROR("OpenGL Error in redraw_map()"); if(dblbuf) glutSwapBuffers(); else glFlush(); }
/* just draw textured highlight */ void redraw_tex_highlight(void) { if(lightchanged[UPDATE_TEX]) { makeHighlight(128); lightchanged[UPDATE_TEX] = GL_FALSE; } glPushMatrix(); /* assuming modelview */ glTranslatef(objpos[X], objpos[Y], 0.f); /* translate object */ glRotatef(objangle[X], 0.f, 1.f, 0.f); /* rotate object */ glRotatef(objangle[Y], 1.f, 0.f, 0.f); glClearColor(.1f, .1f, .1f, 1.f); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glClearColor(0.f, 0.f, 0.f, 1.f); /* draw the specular highlight */ glBindTexture(GL_TEXTURE_2D, HIGHLIGHT_TEX); glEnable(GL_TEXTURE_GEN_S); glEnable(GL_TEXTURE_GEN_T); glCallList(object); glDisable(GL_TEXTURE_GEN_S); glDisable(GL_TEXTURE_GEN_T); glPopMatrix(); /* assuming modelview */ CHECK_ERROR("OpenGL Error in redraw_tex()"); if(dblbuf) glutSwapBuffers(); else glFlush(); }
void ecErrorv(EcCompiler *cp, cchar *severity, EcLocation *loc, cchar *fmt, va_list args) { cchar *appName; char *pointer, *errorMsg, *msg; appName = mprGetAppName(cp); msg = sfmtv(fmt, args); if (loc) { if (loc->source) { pointer = makeHighlight(cp, loc->source, loc->column); errorMsg = sfmt("%s: %s: %s: %d: %s\n %w \n %s", appName, severity, loc->filename, loc->lineNumber, msg, loc->source, pointer); } else if (loc->lineNumber >= 0) { errorMsg = sfmt("%s: %s: %s: %d: %s", appName, severity, loc->filename, loc->lineNumber, msg); } else { errorMsg = sfmt("%s: %s: %s: 0: %s", appName, severity, loc->filename, msg); } } else { errorMsg = sfmt("%s: %s: %s", appName, severity, msg); } cp->errorMsg = srejoin(cp->errorMsg, errorMsg, NULL); mprBreakpoint(); }